Clase: Mongo::URI::OptionsMapper Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Registrable
Definido en:
lib/mongo/uri/options_mapper.rb

Overview

Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

Realiza la asignación entre opciones de URI y opciones de Ruby.

Esta clase contiene:

  • La asignación que define cómo las opciones de URI se convierten en opciones de Ruby.

  • El mapeo de los nombres de opciones URI en minúsculas a los nombres de opciones URI en mayúsculas canónicos.

  • Métodos para realizar la conversión de valores de opciones URI a valores de opciones Ruby (los métodos convert_*). Por lo general, estos advierten y devuelven nil cuando la entrada proporcionada es inválida.

  • Métodos para realizar la conversión de valores de opciones de Ruby a opciones estandarizadas de MongoClient (métodos revert_*). Estos suponen que la entrada es válida y, por lo general, no realizan validación.

Los nombres de las opciones URI no distinguen mayúsculas de minúsculas. Las opciones de Ruby se especifican como símbolos (aunque en las opciones de cliente se usa acceso indiferente).

Desde:

  • 2.0.0

Resumen constante

Constantes incluidas desde Loggable

Registrable::PREFIX

Resumen de atributos de la instancia colapsar

Resumen del método de clase colapsar

Resumen del método de instancia colapsar

Métodos incluidos desde Registrable

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

Detalles del constructor

#initialize(**opts) ⇒ OptionsMapper

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Instancía el asignador de opciones.

Parámetros:

  • opta (encriptada)

    un conjunto personalizable de opciones

Hash de opciones (**opts):

  • :logger (Logger)

    Un registrador personalizado para usar.

Desde:

  • 2.0.0



46
47
48
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 46

def inicializar(**opta)
  @options = opta
end

Detalles de los atributos de instancia

#opcionesHash (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve las opciones.

Devuelve:

  • (encriptada)

    Las opciones.

Desde:

  • 2.0.0



51
52
53
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 51

def opciones
  @options
end

Detalles del método de clase

.uri_option(uri_key, nombre, **extra) ⇒ Object

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Pequeño DSL interno para registrar una opción de URI de MongoDB en el URI_OPTION_MAP.

Parámetros:

  • uri_key (string)

    La opción URI de MongoDB para registrarse.

  • Nombre (Símbolo)

    El nombre de la opción en el controlador.

  • adicional (encriptada)

    Opciones adicionales.

    • :group [Symbol] Hash anidado donde irá la opción.

    • :type [ Symbol ] Nombre de la función para transformar el valor.

Desde:

  • 2.0.0



260
261
262
263
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 260

def sí mismo.opción uri(uri_key, Nombre, **adicional)
  URI_OPTION_MAP[uri_key.minúscula] = { nombre: Nombre }.update(adicional)
  NOMBRES_CANÓNICOS_OPCIÓN_URI[uri_key.minúscula] = uri_key
end

Detalles del método de instancia

#add_uri_option(clave, valor, uri_options) ⇒ Object

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Agrega una opción al hash de opciones de URI.

Acquires a target for the option based on group.
Transforms the value.
Merges the option into the target.

Parámetros:

  • llave (string)

    Nombre de la opción URI.

  • Valor (string)

    El valor de la opción.

  • uri_options (encriptada)

    El objetivo de la opción base.

Desde:

  • 2.0.0



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 62

def add_uri_option(llave, Valor, uri_options)
  estrategia = URI_OPTION_MAP[llave.minúscula]
  si estrategia.nil?
    advertencia de registro("Opción de URI no soportada '#{key}' en URI '#{@string}'. Será ignorada.")
    return
  end

  group = estrategia[:grupo]
  Objetivo = si group
    uri_options[group] || {}
  else
    uri_options
  end
  Valor = apply_transform(llave, Valor, estrategia[Tipo])
  # A veces el valor aquí podría ser nulo, por ejemplo si estamos procesamiento
  # leer las etiquetas de preferencia de lectura o las propiedades del mecanismo de autenticación y todas las
  # los datos son inválidos. Ignora tales opciones.
  a menos que Valor.nil?
    opción de fusión de uri(Objetivo, Valor, estrategia[nombre])
  end

  si group && !Objetivo.¿vacío? && !uri_options.key?(group)
    uri_options[group] = Objetivo
  end
end

#ruby_to_smc(opts) ⇒ Hash

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Convierte las opciones de Ruby proporcionadas en "opciones estandarizadas de MongoClient".

Parámetros:

  • opta (encriptada)

    Opciones de Ruby para convertir.

Devuelve:

  • (encriptada)

    Opciones del MongoClient estandarizadas.

Desde:

  • 2.0.0



126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 126

def ruby_to_smc(opta)
  rv = {}
  URI_OPTION_MAP.cada hacer |uri_key, especulación|
    si especulación[:grupo]
      v = opta[especulación[:grupo]]
      v = v && v[especulación[nombre]]
    else
      v = opta[especulación[nombre]]
    end
    a menos que v.nil?
      si tipo = especulación[Tipo]
        v = enviar("revert_#{type}", v)
      end
      canonical_key = NOMBRES_CANÓNICOS_OPCIÓN_URI[uri_key]
      a menos que canonical_key
        propagar ArgumentError, "Opción #{uri_key} no es conocida"
      end
      rv[canonical_key] = v
    end
  end
  # Para las opciones que son por defecto verdaderas, remueve el valor si es verdadero.
  %w(retryReads retryWrites).cada hacer |k|
    si rv[k]
      rv.borrar(k)
    end
  end
  # Remover la fuente de autenticación cuando sea $external para mecanismos que estén por defecto
  # (o require) esa fuente de autenticación.
  si %w(MONGODB-AWS).incluir?(rv['authMechanism']) && rv['authSource'] == '$external'
    rv.borrar('authSource')
  end
  # ssl y tls son alias, remueva los de ssl
  rv.borrar('ssl')
  # TODO remover authSource si es igual a la base de datos,
  # requiere este método para conocer la base de datos especificada en el cliente.
  rv
end

#ruby_to_string(opciones) ⇒ Hash

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Convierte las opciones de Ruby proporcionadas a su representación en una cadena URI.

Parámetros:

  • opta (encriptada)

    Opciones de Ruby para convertir.

Devuelve:

  • (encriptada)

    Hash de string URI.

Desde:

  • 2.0.0



169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 169

def ruby_to_string(opta)
  rv = {}
  URI_OPTION_MAP.cada hacer |uri_key, especulación|
    si especulación[:grupo]
      v = opta[especulación[:grupo]]
      v = v && v[especulación[nombre]]
    else
      v = opta[especulación[nombre]]
    end
    a menos que v.nil?
      si tipo = especulación[Tipo]
        v = enviar("stringify_#{tipo}", v)
      end
      canonical_key = NOMBRES_CANÓNICOS_OPCIÓN_URI[uri_key]
      a menos que canonical_key
        propagar ArgumentError, "Opción #{uri_key} no es conocida"
      end
      rv[canonical_key] = v
    end
  end
  # Para las opciones que son por defecto verdaderas, remueve el valor si es verdadero.
  %w(retryReads retryWrites).cada hacer |k|
    si rv[k]
      rv.borrar(k)
    end
  end
  # Remover la fuente de autenticación cuando sea $external para mecanismos que estén por defecto
  # (o require) esa fuente de autenticación.
  si %w(MONGODB-AWS).incluir?(rv['authMechanism']) && rv['authSource'] == '$external'
    rv.borrar('authSource')
  end
  # ssl y tls son alias, remueva los de ssl
  rv.borrar('ssl')
  # TODO remover authSource si es igual a la base de datos,
  # requiere este método para conocer la base de datos especificada en el cliente.
  rv
end

#smc_to_ruby(opciones) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 88

def smc_to_ruby(opta)
  uri_options = {}

  opta.cada hacer |llave, Valor|
    estrategia = URI_OPTION_MAP[llave.minúscula]
    si estrategia.nil?
      advertencia de registro("Opción de URI no soportada '#{key}' en URI '#{@string}'. Será ignorada.")
      return
    end

    group = estrategia[:grupo]
    Objetivo = si group
      uri_options[group] || {}
    else
      uri_options
    end

    Valor = apply_transform(llave, Valor, estrategia[Tipo])
    # A veces el valor aquí podría ser nulo, por ejemplo si estamos procesamiento
    # leer las etiquetas de preferencia de lectura o las propiedades del mecanismo de autenticación y todas las
    # los datos son inválidos. Ignora tales opciones.
    a menos que Valor.nil?
      opción de fusión de uri(Objetivo, Valor, estrategia[nombre])
    end

    si group && !Objetivo.¿vacío? && !uri_options.key?(group)
      uri_options[group] = Objetivo
    end
  end

  uri_options
end