Clase: Mongoid::PersistenceContext
- Hereda:
-
Objeto
- Objeto
- Mongoid::PersistenceContext
- Ampliado por:
- Reenviable
- Definido en:
- lib/mongoid/persistence_context.rb
Overview
Objeto que encapsula la lógica para establecer/obtener una colección y el nombre de una base de datos, así como un cliente con opciones particulares para utilizar al almacenar modelos de manera persistente.
Resumen de constantes colapsar
- EXTRA_OPTIONS =
Opciones extra además de las opciones del cliente de driver que determinan el contexto de persistencia.
%i[Cliente Colección collection_options].freeze
- VALID_OPTIONS =
La lista completa de opciones válidas de contexto de persistencia.
(mongo::Cliente::VALID_OPTIONS + EXTRA_OPTIONS).freeze
Resumen de atributos de la instancia colapsar
-
#options ⇒ Hash
Solo lectura
Las opciones que definen este contexto de persistencia.
Resumen del método de clase colapsar
-
.limpiar(objeto, clúster = nulo, contexto_original = nulo) ⇒ Objeto
Limpia el contexto de persistencia para una clase específica o una instancia de modelo.
-
.get(object) ⇒ Mongoid::PersistenceContext
Obtén el contexto de persistencia para una clase o instancia de modelo específica.
-
.set(object, options_or_context) ⇒ Mongoid::PersistenceContext
Establece el contexto de persistencia para una clase o instancia de modelo en particular.
Resumen del método de instancia colapsar
-
#==(other) ⇒ true | false.
Determine si este contexto de persistencia es igual a otro.
-
#cliente ⇒ Mongo::Client
Obtén el cliente para este contexto de persistencia.
-
#client_name ⇒ Symbol
Obtén el nombre del cliente para este contexto de persistencia.
-
#colección(parent = nil) ⇒ Mongo::Collection
Obtenga la colección para este contexto de persistencia.
-
#collection_name ⇒ string
Obtén el nombre de la colección para este contexto de persistencia.
-
#database_name ⇒ String
Obtén el nombre de la base de datos para este contexto de persistencia.
-
#for_child(documento) ⇒ PersistenceContext
privado
Devuelve un nuevo contexto de persistencia que es coherente con el documento hijo dado, heredando los ajustes más apropiados.
-
#inicializar(objeto, opts = {}) ⇒ PersistenceContext
constructor
Inicializa el objeto de contexto de persistencia.
-
#requested_storage_options ⇒ Hash | nil
privado
El subconjunto de las opciones proporcionadas que se pueden utilizar como opciones de almacenamiento.
-
#reusable_client? ⇒ true | false
privado
Si el cliente del contexto puede ser reutilizado más tarde y, por lo tanto, no debe cerrarse.
Detalles del Constructor
#initialize(objeto, opts = {}) ⇒ PersistenceContext
Inicializa el objeto de contexto de persistencia.
43 44 45 46 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 43 def inicializar(Objeto, opciones = {}) @object = Objeto (opciones) end |
Detalles de atributo de instancias
#opciones ⇒ Hash (solo lectura)
Las opciones que definen este contexto de persistencia.
18 19 20 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 18 def @options end |
Detalles del método de clase
.clear(objeto, clúster = nil, original_context = nil) ⇒ Objeto
Limpia el contexto de persistencia para una clase específica o una instancia de modelo.
266 267 268 269 270 271 272 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 266 def borrar(Objeto, clúster = nulo, original_context = nulo) si (context = Obtener(Objeto)) && !(clúster.nil? || context.clúster.¿igual?(clúster)) && !context.reusable_client? context.Cliente.Cerrar end asegurar store_context(Objeto, original_context) end |
.get(objeto) ⇒ Mongoid::PersistenceContext
Obtén el contexto de persistencia para una clase o instancia de modelo específica.
253 254 255 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 253 def Obtener(Objeto) get_context(Objeto) end |
.set(objeto, opciones_o_contexto) ⇒ Mongoid::PersistenceContext
Establece el contexto de persistencia para una clase o instancia de modelo en particular.
Si ya existe un contexto de persistencia configurado, las opciones en el contexto existente se combinan con las opciones proporcionadas a la llamada set.
232 233 234 235 236 237 238 239 240 241 242 243 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 232 def Configura(Objeto, ) existing_context = get_context(Objeto) = si existing_context existing_context. else {} end = . si .is_a?(PersistenceContext) = .fusionar() context = PersistenceContext.Nuevo(Objeto, ) store_context(Objeto, context) end |
Detalles del método de instancia
#==(another) ⇒ verdadero | falso
Determine si este contexto de persistencia es igual a otro.
153 154 155 156 157 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 153 def ==(Otros) return false a menos que Otros.is_a?(PersistenceContext) == Otros. end |
#cliente ⇒ Mongo::Client
Obtén el cliente para este contexto de persistencia.
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 116 def Cliente @client ||= begin Cliente = Clientes.con_nombre(client_name) = si database_name_option Cliente = Cliente.Usar(database_name) = .excepto(:database, 'database') end Cliente = Cliente.con() a menos que .¿vacío? Cliente end end |
#client_name ⇒ Symbol
Obtén el nombre del cliente para este contexto de persistencia.
139 140 141 142 143 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 139 def client_name @client_name ||= __evaluate__([cliente]) || Con hilo.client_override || __evaluate__([cliente]) end |
#colección(parent = nil) ⇒ Mongo::Collection
Obtenga la colección para este contexto de persistencia.
78 79 80 81 82 83 84 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 78 def Colección(padre = nulo) si padre padre.Colección.con(.excepto(:database, 'database')) else Cliente[nombre_colección.to_sym] end end |
#collection_name ⇒ String
Obtén el nombre de la colección para este contexto de persistencia.
93 94 95 96 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 93 def nombre_colección @collection_name ||= __evaluate__([colección] || [colección]) end |
#nombre_base_de_datos ⇒ string
Obtén el nombre de la base de datos para este contexto de persistencia.
105 106 107 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 105 def database_name __evaluate__(database_name_option) || Cliente.database.Nombre end |
#for_child(document) ⇒ PersistenceContext
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve un nuevo contexto de persistencia que es coherente con el documento hijo dado, heredando los ajustes más apropiados.
56 57 58 59 60 61 62 63 64 65 66 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 56 def for_child(Documento) si Documento.is_a?(clase) return sí mismo si Documento == (@object.is_a?(clase) ? @object : @object.clase) elsif Documento.is_a?(Mongoid::Documento) return sí mismo si Documento.clase == (@object.is_a?(clase) ? @object : @object.clase) else propagar ArgumentError, 'debe especificar una clase o una instancia de documento' end PersistenceContext.Nuevo(Documento, .fusionar(Documento.)) end |
#requested_storage_options ⇒ Hash | nil
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
El subconjunto de las opciones proporcionadas que se pueden utilizar como opciones de almacenamiento.
181 182 183 184 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 181 def rebanada = @options.rebanada(*Mongoid::Clientes::Validadores::Almacenamiento::VALID_OPTIONS) rebanada.any? ? rebanada : nulo end |
#cliente_reutilizable? ⇒ true | false
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Si el cliente del contexto puede ser reutilizado más tarde y, por lo tanto, no debe cerrarse.
Si el contexto de persistencia se solicita solo con la opción :client, significa que el contexto debe utilizar un cliente configurado en mongoid.yml. No se deben cerrar dichos clientes cuando se borre el contexto, ya que se reutilizarán más adelante.
170 171 172 |
# Archivo 'lib/mongoid/persistence_context.rb', línea 170 def reusable_client? @options.claves == [ cliente ] end |