클래스: Mongo::URI

상속:
객체
  • 객체
모두 표시
다음을 포함합니다.
주소::Validator, Loggable
다음에 정의됨:
lib/ Mongo/uri.rb,
lib/ Mongo/uri/srv_protocol.rb,
lib/ Mongo/uri/options_mapper.rb

개요

URI 클래스는 사용자가 MongoDB 연결 string 형식 사양에 정의된 대로 uri를 구문 분석할 수 있는 방법을 제공합니다.

https://www.mongodb.com/ko-kr/docs/manual/reference/connection-string/

예시:

uri string 을 사용하여 클라이언트 연결을 설정합니다.

uri = Mongo::URI.new('mongodb://localhost:27017')
client = Mongo::Client.new(uri.servers, uri.options)
client.(uri.credentials)
client[uri.database]

이후:

  • 2.0.0

네임스페이스 아래에 정의됨

클래스: OptionsMapper, SRVProtocol

상수 요약 접기

SCHEME =
더 이상 사용되지 않습니다.

3.0 에서 제거될 예정입니다.

MongoDB 연결 string 체계입니다.

이후:

  • 2.0.0

'mongodb://'
MONGODB_SCHEME =

MongoDB 연결 string 체계 루트입니다.

이후:

  • 2.5.0

'mongodb'
MONGODB_SRV_SCHEME =

MongoDB srv 프로토콜 연결 string 체계 루트입니다.

이후:

  • 2.5.0

'mongodb+srv'
INVALID_SCHEME =
더 이상 사용되지 않습니다.

잘못된 체계에 대한 오류 세부 정보입니다.

이후:

  • 2.1.0

"체계가 잘못되었습니다. 체계는 '#{MONGODB_SCHEME}' 또는 '#{MONGODB_SRV_SCHEME}'이어야 합니다.
FORMAT =

MongoDB URI 형식 사양입니다.

이후:

  • 2.0.0

'MongoDB://[username:password@]host1[:port1][,host2[:port2]' +
',...[,hostN[:portN]]][/[데이터베이스][?options]]'
HELP =

MongoDB URI(연결 string) 문서 URL

이후:

  • 2.0.0

'https://www.mongodb.com/ko-kr/docs/manual/reference/connection-string/'
UNSAFE =

urlen코딩해야 하는 안전하지 않은 문자입니다.

이후:

  • 2.1.0

%r{[:/@]}
PERCENT_CHAR =

사용자 자격 증명에 인코딩해야 하는 백분율 기호입니다.

이후:

  • 2.5.1

/%/
UNIX_SOCKET =

유닉스 소켓 접미사.

이후:

  • 2.1.0

/.sock/
HOST_DELIM =

호스트를 구분하는 문자입니다.

이후:

  • 2.1.0

','
HOST_PORT_DELIM =

호스트와 포트를 구분하는 문자입니다.

이후:

  • 2.1.0

':'
DATABASE_DELIM =

데이터베이스를 구분하는 문자입니다.

이후:

  • 2.1.0

'/'
URI_OPTS_DELIM =

문자 구분 옵션입니다.

이후:

  • 2.1.0

'?'
INDIV_URI_OPTS_DELIM =
더 이상 사용되지 않습니다.

여러 옵션을 구분하는 문자입니다.

이후:

  • 2.1.0

'&'
URI_OPTS_밸류_DELIM =

옵션과 해당 값을 구분하는 문자입니다.

이후:

  • 2.1.0

'='
AUTH_USER_PWD_DELIM =

사용자 이름과 비밀번호를 구분하는 문자입니다.

이후:

  • 2.1.0

':'
AUTH_DELIM =

인증 자격 증명을 구분하는 문자입니다.

이후:

  • 2.1.0

'@'
SCHEME_DELIM =

체계 구분자.

이후:

  • 2.5.0

'://'
CREDENTIALS_PLACEHOLDER =

표시, 로그 또는 오류 보고를 위해 URI가 렌더링될 때 평문 자격 증명 대신 사용되는 플레이스홀더입니다.

이후:

  • 2.0.0

'<credentials>'
USERINFO_REDACTION_REGEX =

MongoDB 연결 문자열의 userinfo 부분과 일치하는 패턴. 시작 위치에 안커가 있고 권한 성분에 바인딩되어 있지만(첫 번째 '/', '?', '#'에서 중단), 해당 성분의 마지막 '@'까지 그리디하게 일치하므로 에스케이프되지 않은 '@'를 포함하는 비밀번호도 여전히 완전히 음영처리됩니다. 대소문자를 구분하지 않으므로 'MongoDB://'와 같은 일반적이지 않은 스키마도 익명처리됩니다. 파서가 거부하며 익명처리기는 결과 오류에서 자격 증명을 노출하는 것이 되어서는 안 됩니다.

이후:

  • 2.0.0

%r{\A(mongodb(?:\+srv)?://)[^/?#]*@}i.동결
INVALID_OPTS_밸류_DELIM =

잘못된 옵션 형식에 대한 오류 세부 정보입니다.

이후:

  • 2.1.0

'옵션과 해당 값은 ' +
" by '# {URI_OPTS_밸류_DELIM} '
UNESCAPED_USER_PWD =

URL렌코딩되지 않은 사용자 이름 또는 비밀번호에 대한 오류 세부 정보입니다.

이후:

  • 2.1.0

'사용자 이름과 비밀번호는 URL렌코딩해야 합니다.'
UNESCAPED_UNIX_SOCKET =

URL렌코딩되지 않은 유닉스 소켓 경로에 대한 오류 세부 정보입니다.

이후:

  • 2.1.0

'UNIX 도메인 소켓은 URL렌코딩되어야 합니다.'
UNESCAPED_DATABASE =

URL렌코딩되지 않은 인증 데이터베이스 이름에 대한 오류 세부 정보입니다.

이후:

  • 2.1.0

'인증 데이터베이스 URL렌코딩되어야 합니다.'
INVALID_OPTS_DELIM =

데이터베이스 구분 기호 없이 옵션을 제공하는 경우의 오류 세부 정보입니다.

이후:

  • 2.1.0

"옵션이 지정된 경우데이터베이스 구분 기호 '#{DATABASE_DELIM}'이(가) 있어야 합니다."
INVALID_HOST =

누락된 호스트에 대한 오류 세부 정보입니다.

이후:

  • 2.1.0

'호스팅하다 누락되었습니다. 하나 이상을 제공해야 합니다.'
INVALID_PORT =

잘못된 포트에 대한 오류 세부 정보입니다.

이후:

  • 2.1.0

'포트가 잘못되었습니다. 포트는 0 보다 크고 65536보다 작은 정수여야 합니다.'
READ_mode_MAP =

URI 읽기 기본 설정 모드를 Ruby 드라이버 읽기 기본 설정 모드로 매핑

이후:

  • 2.0.0

{
  '프라이머리' => :primary,
  'primarypreferred' => :primary_preferred,
  'secondary' => :secondary,
  'secondarypreferred' => :secondary_preferred,
  '가장 가까운' => :nearest
}.동결
AUTH_MECH_MAP =

Ruby 드라이버 메커니즘에 대한 URI 인증 메커니즘 매핑

이후:

  • 2.0.0

{
  'GSSAPI' => :gssapi,
  'MONGODB-AWS' => :aws,
  # MONGODB-CR은 더 이상 사용되지 않으며 드라이버 버전 3.0에서 제거될 예정입니다.
  'MONGODB-CR' => :mongodb_cr,
  'MONGODB-X509' => :mongodb_x509,
  'PLAIN' => :플레인,
  'SCRAM-SHA-1' => :scRAM,
  'SCRAM-SHA-256' => :scram256,
}.동결
SERVER_MONITORING_MODES =

serverMonitoringMode URI 옵션의 유효한 값입니다.

이후:

  • 2.0.0

%w[스트림 poll 자동].동결
REPEAtable_OPTIONS =

URI에 두 번 이상 표시되도록 허용된 옵션입니다.

'tls' 및 'sl'의 모든 인스턴스가 동일한 값을 가져야 한다는 URI 옵션 사양 요구 사항을 따르려면 해당 옵션에 대해 전달된 모든 값을 추적 해야 합니다. 충돌하지 않는다고 가정하면 URI를 구문 분석한 직후 단일 값으로 압축됩니다.

이후:

  • 2.1.0

%i[tag_sets ssl]

Loggable에서 포함된 상수

Loggable::prefix

인스턴스 속성 요약 접기

클래스 메서드 요약 접기

인스턴스 메서드 요약 접기

주소::유효성 검사기에 포함된 메서드

#validate_address_str!

Loggable에 포함된 메서드

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

생성자 세부 정보

#initialize(string, options = {}) ⇒ URI

제공된 string 에서 새 URI를 만듭니다.

예시:

새 URI를 만듭니다.

URI.new('mongodb://localhost:27017')

매개변수:

  • 문자열 (string)

    구문 분석할 URI입니다.

  • 옵션 (해시) (기본값: {})

    옵션.

옵션 해시(options):

  • :logger (로거)

    사용할 사용자 지정 로거입니다.

다음을 발생시킵니다.

이후:

  • 2.0.0



313
314
315
316
317
318
319
320
321
322
323
324
325
326
# 파일 'lib/ Mongo/uri.rb', 313줄

def 초기화(문자열, 옵션 = {})
  올리다 오류::InvalidURI.신규(문자열, 'URI는 nil이 아닌 string 이어야 합니다.') 하지 않는 한 문자열
  올리다 오류::InvalidURI.신규(문자열, '빈 URI는 구문 분석할 수 없습니다.') 만약 문자열.비어 있나요?

  @string = 문자열
  @options = 옵션
  parsed_scheme, _, 나머지 = 문자열.파티션(SCHEME_DELIM)
  하지 않는 한 parsed_scheme == Scheme
    raise_invalid_error!(" '#{parsed_scheme} ' 스키마가 잘못되었습니다. 스키마는 '# {MONGODB_SCHEME} } '이어야 합니다 . SRV URI를 구문 분석하려면 URI#get을 사용하세요.")
  end
  raise_invalid_error!('URI에 호스트가 없습니다.') 만약 나머지.비어 있나요?
  구문 분석!(나머지)
  validate_uri_options!
end

인스턴스 속성 세부 정보

#options객체 (읽기 전용)

uri 구문 분석기 객체 옵션입니다.

이후:

  • 2.0.0



37
38
39
# 파일 'lib/ Mongo/uri.rb', 37줄

def 옵션
  @options
end

서버 # 개 ⇒ 객체 (읽기 전용)

URI에 지정된 서버입니다.

이후:

  • 2.0.0



47
48
49
# 파일 'lib/ Mongo/uri.rb', 47줄

def 서버
  @servers
end

#uri_options객체 (읽기 전용)

Mongo::Options::uri에 지정된 옵션을 삭제했습니다.

이후:

  • 2.1.0



42
43
44
# 파일 'lib/ Mongo/uri.rb', 42줄

def uri_options
  @uri_options
end

클래스 메서드 세부 정보

.get(string, opts = {}) ⇒ URI, URI::SRVProtocol

URI 객체 또는 SRVProtocol URI 객체를 가져옵니다.

예시:

uri 객체를 가져옵니다.

URI.get(string)

매개변수:

  • 문자열 (string)

    구문 분석할 URI입니다.

  • opts (해시) (기본값: {})

    옵션.

  • 옵션 (해시)

    사용자 지정 가능한 옵션 세트

반환합니다:

다음을 발생시킵니다.

이후:

  • 2.5.0



262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
# 파일 'lib/ Mongo/uri.rb', 262줄

def self.get(문자열, opts = {})
  올리다 오류::InvalidURI.신규(문자열, 'URI는 nil이 아닌 string 이어야 합니다.') 하지 않는 한 문자열
  올리다 오류::InvalidURI.신규(문자열, '빈 URI는 구문 분석할 수 없습니다.') 만약 문자열.비어 있나요?

  Scheme, = 문자열.파티션(SCHEME_DELIM)
  case Scheme
  when MONGODB_SCHEME
    URI.신규(문자열, opts)
  when MONGODB_SRV_SCHEME
    SRVProtocol.신규(문자열, opts)
  other
    올리다 오류::InvalidURI.신규(문자열,
                                " '#{schema}' 체계가 잘못 되었습니다. 체계는' #{MONGODB_SCHEME} ' 또는' #{MONGODB_SRV_SCHEME} ' ")
  end
end

.redact(string) ⇒ String

MongoDB 연결 문자열의 userinfo 부분을 플레이스홀더로 대체하여 결과를 안전하게 로그하거나 표시하거나 예외 메시지에 포함할 수 있습니다.

입력은 파싱되지 않고 string으로 일치되므로 잘못된 URI에 대해 호출하는 것이 안전합니다(이는 InvalidURI가 발생하는 정확히 그런 경우입니다).

매개변수:

  • 문자열 (string)

    원시 URI string입니다.

반환합니다:

  • (string)

    CREDENTIALS_PLACEHOLDER로 대체된 사용자 정보가 포함된 URI 또는 string이 아니거나 사용자 정보가 없는 경우 입력이 변경되지 않습니다.

이후:

  • 2.0.0



243
244
245
246
247
# 파일 'lib/ Mongo/uri.rb', 243줄

def self.수정(문자열)
  반환 문자열 하지 않는 한 문자열.is_a?(문자열)

  문자열.sub(USERINFO_REDACTION_REGEX, "\\1#{CREDENTIALS_PLACEHOLDER}@")
end

인스턴스 메서드 세부 정보

#client_optionsMongo::Options::Redacted

인스턴스화 시 Mongo::Client에 전달해야 하는 옵션 해시를 가져오므로 해당 점 에서 자격 증명 과 데이터베이스 병합할 필요가 없습니다. 여기에는 단일 점 만 있습니다.

예시:

클라이언트 옵션을 가져옵니다.

uri.client_options

반환합니다:

이후:

  • 2.0.0



288
289
290
291
292
293
294
# 파일 'lib/ Mongo/uri.rb', 288줄

def client_options
  opts = uri_options. do |opts|
    opts[:database] = @database 만약 @database
  end

  @user ? opts.merge(자격 증명) : opts
end

자격 증명 # ⇒ 해시

URI에 제공된 자격 증명을 가져옵니다.

예시:

자격 증명을 가져옵니다.

uri.credentials

반환합니다:

  • (해시)

    자격 증명.

    • :user [ string ] 사용자입니다.
    • :password [ string ] 제공된 비밀번호입니다.

이후:

  • 2.0.0



338
339
340
# 파일 'lib/ Mongo/uri.rb', 338줄

def 자격 증명
  { 사용자: @user, 비밀번호: @password }
end

#데이터베이스string

URI에 제공된 데이터베이스를 가져옵니다.

예시:

데이터베이스를 가져옵니다.

uri.database

반환합니다:

  • (string)

    데이터베이스.

이후:

  • 2.0.0



350
351
352
# 파일 'lib/ Mongo/uri.rb', 350줄

def database
  @database || Database::ADMIN
end

#검사string

URI의 사람이 읽을 수 있는 수정된 표현을 반환합니다. 기본값 객체#inspect는 @string과 @password를 인스턴스 변수로 덤프하여 자격 증명을 노출합니다.

반환합니다:

  • (string)

    수정된 검사 string.

이후:

  • 2.0.0



373
374
375
# 파일 'lib/ Mongo/uri.rb', 373줄

def 검사
  "#<#{self.클래스.name}: #{reconstruct_uri}>"
end

#srv_records객체

이후:

  • 2.0.0



296
297
298
# 파일 'lib/ Mongo/uri.rb', 296줄

def srv_records
  nil
end

#to_sstring

자격 증명이 수정된 string으로 uri를 가져옵니다.

자격 증명이 CREDENTIALS_PLACEHOLDER 로 대체되어 결과를 안전하게 로그하거나 표시할 수 있습니다. 자격 증명 을 사용하여 원래 사용자와 비밀번호를 복구합니다.

예시:

URI를 string 로 가져옵니다.

uri.to_s

반환합니다:

  • (string)

    수정된 uri string.

이후:

  • 2.0.0



364
365
366
# 파일 'lib/ Mongo/uri.rb', 364줄

def to_s
  재구성_우리
end