类:Mongo::URI

继承:
对象
  • 对象
显示全部
包括:
Address::Validator , Loggable
定义于:
lib/ Mongo/uri.rb
lib/ Mongo/uri/srv_protocol.rb、
lib/ Mongo/uri/options_mapper.rb

Overview

URI 类为用户提供了一种解析连接MongoDB string格式规范中定义的 uri 的方法。

https://www.mongodb.com/zh-cn/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]]'
帮助 =

MongoDB URI(连接string )文档URL

由于:

  • 2.0.0

'https://www.mongodb.com/zh-cn/docs/manual/reference/connection-string/'
不安全 =

必须进行 urlencoded 的不安全字符。

由于:

  • 2.1.0

%r{[:/@]}
PERCENT_CHAR =

必须在用户信用中编码的百分号。

由于:

  • 2.5.1

/%/
UNIX_SOCKET =

Unix 套接字后缀。

由于:

  • 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_VALUE_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_VALUE_DELIM =

无效选项格式的错误详细信息。

由于:

  • 2.1.0

' 选项及其值必须分隔 ' +
" by ' #{ URI_OPTS_VALUE_DELIM } ' "
UNESCAPED_USER_PWD =

非 urlencoded 用户名或密码的错误详细信息。

由于:

  • 2.1.0

'用户名和密码必须进行 urlencoded。'
UNESCAPED_UNIX_SOCKET =

非 urlencoded unix 套接字路径的错误详细信息。

由于:

  • 2.1.0

'UNIX 域套接字必须进行 urlencoded。'
UNESCAPED_DATABASE =

非 urlencoded 身份验证数据库名称的错误详细信息。

由于:

  • 2.1.0

'身份验证数据库必须进行 urlencoded。'
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 ' => :primary,
  ' primarypreferred ' => :primary_preferred,
  ' secondary ' => :secondary,
  ' secondarypreferred ' => :secondary_preferred,
  ' nearest ' => :nearest
}.冻结
AUTH_MECH_MAP =

URI 身份验证机制到 Ruby 驱动程序机制的映射

由于:

  • 2.0.0

{
  ' GSSAPI ' => :gssapi,
  ' MONGODB-AWS ' => :aws,
  # MONGODB-CR 已弃用,并将在驱动程序版本3.0中删除
  'MONGODB-CR' => :mongodb_cr,
  ' MONGODB-X 509 ' => :mongodb_x 509,
  ' PLAIN ' => :plain,
  ' SCRAM-SHA- 1 ' => :scram,
  ' SCRAM-SHA- 256 ' => :scram 256,
}.冻结
SERVER_MONITORING_MODES =

serverMonitoringMode URI 选项的有效值。

由于:

  • 2.0.0

%w[ 轮询 auto].冻结
REPEATABLE_OPTIONS =

允许在 uri 中多次出现的选项。

为了遵循 URI 选项规范要求“tls”和“ssl”的所有实例都具有相同的值,我们需要追踪为这些选项传入的所有值。假设它们不冲突,它们将在解析 URI 后立即压缩为单个值。

由于:

  • 2.1.0

%i[tag_sets ssl]

Loggable中包含的常量

Loggable::PREFIX

实例属性摘要折叠

类方法摘要折叠

实例方法摘要折叠

Address::Validator中包含的方法

#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
# File 'lib/ Mongo/uri.rb', 第 313 行

def 初始化(字符串, 选项 = {})
  提高 错误::InvalidURI.new(字符串, ' URI 必须是string ,而不是 nil。 ') 除非 字符串
  提高 错误::InvalidURI.new(字符串, '无法解析空 URI。 ') if 字符串.空?

  @string = 字符串
  @options = 选项
  parsed_scheme, _, 剩余 = 字符串.分区(SCHEME_DELIM)
  除非 parsed_scheme == 有关
    Raise_invalid_error!("无效的模式 ' #{ parsed_scheme } '。模式必须是 ' #{ MONGODB_SCHEME } '。使用 URI#get 解析 SRV URI。 ")
  end
  Raise_invalid_error!(' URI 中没有主机') if 剩余.空?
  parse!(剩余)
  validate_uri_options!
end

实例属性详细信息

# options对象(只读)

uri 解析器对象选项。

由于:

  • 2.0.0



37
38
39
# File 'lib/ Mongo/uri.rb', 第 37 行

def 选项
  @options
end

#servers对象(只读)

uri 中指定的服务器。

由于:

  • 2.0.0



47
48
49
# File 'lib/ Mongo/uri.rb', 第 47 行

def 服务器
  @servers
end

# uri_options对象(只读)

Mongo::Options::Redacted 列出了 uri 中指定的选项。

由于:

  • 2.1.0



42
43
44
# File '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
# File 'lib/ Mongo/uri.rb', 第 262 行

def self.获取(字符串, opts = {})
  提高 错误::InvalidURI.new(字符串, ' URI 必须是string ,而不是 nil。 ') 除非 字符串
  提高 错误::InvalidURI.new(字符串, '无法解析空 URI。 ') if 字符串.空?

  有关, = 字符串.分区(SCHEME_DELIM)
  案例 有关
  when MONGODB_SCHEME
    URI.new(字符串, opts)
  when MONGODB_SRV_SCHEME
    SRVProtocol.new(字符串, opts)
  else
    提高 错误::InvalidURI.new(字符串,
                                " 无效方案 ' # { { 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
# File 'lib/ Mongo/uri.rb', 第 243 行

def self.编辑(字符串)
  return 字符串 除非 字符串.is_a?(字符串)

  字符串.(USERINFO_REDACTION_REGEX, "\\1#{CREDENTIALS_PLACEHOLDER}@")
end

实例方法详细信息

# client_optionsMongo::Options::Redacted

获取在实例化时需要传递给 Mongo::客户端 的选项哈希,因此我们不必在点合并凭证和数据库- 这里只有一个点。

例子:

获取客户端选项。

uri.client_options

返回:

由于:

  • 2.0.0



288
289
290
291
292
293
294
# File 'lib/ Mongo/uri.rb', 第 288 行

def client_options
  opts = uri_options.点击 do |opts|
    opts[:database] = @database if @database
  end

  @user ? opts.合并(merge)(凭证) : opts
end

#凭证哈希

获取 URI 中提供的档案。

例子:

获取凭证。

uri.credentials

返回:

  • (哈希)

    凭证。

    • :user [ string ] 用户。
    • :password [ string ] 提供的密码。

由于:

  • 2.0.0



338
339
340
# File 'lib/ Mongo/uri.rb', 第 338 行

def 凭证
  { 用户: @user, 密码: @password }
end

#数据库string

获取 URI 中提供的数据库。

例子:

获取数据库。

uri.database

返回:

  • ( string )

    数据库。

由于:

  • 2.0.0



350
351
352
# File 'lib/ Mongo/uri.rb', 第 350 行

def database
  @database || Database::ADMIN
end

#检查string

返回编辑过的、人类可读的 URI 表示形式。默认的 Object#inspect 会将 @string 和 @password 作为实例变量转储,从而泄露凭证。

返回:

  • ( string )

    编辑过的检查 string。

由于:

  • 2.0.0



373
374
375
# File 'lib/ Mongo/uri.rb', 第 373 行

def 检查
  "#<#{self..name}: #{reconstruct_uri}>"
end

# srv_records对象

由于:

  • 2.0.0



296
297
298
# File 'lib/ Mongo/uri.rb', 第 296 行

def srv_records
  nil
end

# to_sstring

获取不含任何凭证的uri字符串。

凭证已被 CREDENTIALS_PLACEHOLDER 替换,因此结果可以安全地日志或显示。使用 凭证 恢复原始用户名和密码。

例子:

获取string形式的 uri。

uri.to_s

返回:

  • ( string )

    编辑过的 URI string。

由于:

  • 2.0.0



364
365
366
# File 'lib/ Mongo/uri.rb', 第 364 行

def to_s
  reconstruct_uri
end