Clase: Mongoide::PersistenceContext

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Definido en:
lib/mongoid/persistence_context.rb

Overview

Lógica de encapsulamiento de objetos para configurar/obtener un nombre de colección y base de datos y un cliente con opciones particulares para usar al persistir modelos.

Colapso delresumen constante

OPCIONES_EXTRA =

Opciones extra además de las opciones del cliente de driver que determinan el contexto de persistencia.

Devuelve:

  • (Matriz<Símbolo><Symbol>)

    La lista de opciones adicionales además de las opciones del cliente que determinan el contexto de persistencia.

[ :cliente,
  :recopilación,
  :opciones_de_colección
].freeze
VALID_OPTIONS =

La lista completa de opciones de contexto de persistencia válidas.

Devuelve:

  • (Matriz<Símbolo><Symbol>)

    La lista completa de opciones que definen el contexto de persistencia.

( Mongo::Cliente::OPCIONES VÁLIDAS + EXTRA_OPTIONS ).freeze

Colapso delresumen de atributos de instancia

Colapso delresumen del método de clase

Colapso del resumen del método de instancia

Detalles del constructor

#inicializar(objeto, opciones = {}) ⇒ PersistenceContext

Inicializar el objeto de contexto de persistencia.

Ejemplos:

Crear un nuevo contexto de persistencia.

PersistenceContext.new(model, collection: 'other')

Parámetros:

  • Objeto (Objeto) -

    La instancia de clase o modelo para la que se debe crear un contexto de persistencia.

  • opta (Hash) (predeterminado: {})

    Las opciones de contexto de persistencia.



46
47
48
49
# Archivo 'lib/mongoid/persistence_context.rb', línea 46

def inicializar(Objeto, opta = {})
  @objeto = Objeto
  set_options!(opta)
end

Detalles de los atributos de instancia

#opcionesHash (solo lectura)

Las opciones que definen este contexto de persistencia.

Devuelve:

  • (Hash)

    Las opciones de contexto de persistencia.



20
21
22
# Archivo 'lib/mongoid/persistence_context.rb', línea 20

def opciones
  @opciones
end

Detalles del método de clase

.clear(objeto, cluster = nulo, contexto_original = nulo) ⇒ Objeto

Limpia el contexto de persistencia para una clase específica o una instancia de modelo.

Ejemplos:

Borrar el contexto de persistencia de una instancia de clase o modelo.

PersistenceContext.clear(model)

Parámetros:

  • Objeto (Clase| Objeto)

    La instancia de clase o modelo.

  • clúster (Mongo::Clúster) (predeterminado: nulo)

    El cluster original antes de que se utilizara este contexto.

  • contexto original (Mongoide::PersistenciaContexto) (predeterminado: nulo)

    El contexto de persistencia original que se estableció antes de que se utilizara este contexto.



271
272
273
274
275
276
277
278
279
# Archivo 'lib/mongoid/persistence_context.rb', línea 271

def borrar(Objeto, clúster = nulo, contexto original = nulo)
  Si context = Obtener(Objeto)
    a no ser que clúster.nil? || context.clúster.¿igual?(clúster)
      context.Cliente.cerrar a no ser que context.reusable_client?
    end
  end
asegurar
  store_context(Objeto, contexto original)
end

.obtener(objeto) ⇒ Mongoid::PersistenceContext

Obtenga el contexto de persistencia para una clase o instancia de modelo en particular.

Ejemplos:

Obtenga el contexto de persistencia para una clase o instancia de modelo.

PersistenceContext.get(model)

Parámetros:

  • Objeto (Objeto) -

    La instancia de clase o modelo.

Devuelve:



258
259
260
# Archivo 'lib/mongoid/persistence_context.rb', línea 258

def Obtener(Objeto)
  get_context(Objeto)
end

.set(objeto, opciones_o_contexto) ⇒ Mongoid::PersistenceContext

Establezca el contexto de persistencia para una clase o instancia de modelo en particular.

Si ya existe un contexto de persistencia establecido, las opciones en el contexto existente se combinan con las opciones dadas a la llamada del conjunto.

Ejemplos:

Establecer el contexto de persistencia para una instancia de clase o modelo.

PersistenceContext.set(model)

Parámetros:

  • Objeto (Objeto) -

    La instancia de clase o modelo.

  • options_or_context (Hash | Mongoide::PersistenceContext)

    Las opciones de persistencia o un objeto de contexto de persistencia.

Devuelve:



235
236
237
238
239
240
241
242
243
244
245
246
247
248
# Archivo 'lib/mongoid/persistence_context.rb', línea 235

def conjunto(Objeto, options_or_context)
  existing_context = get_context(Objeto)
  opciones_existentes = Si existing_context
    existing_context.opciones
  else
    {}
  end
  Si options_or_context.is_a?(Contexto de persistencia)
    options_or_context = options_or_context.opciones
  end
  nuevas_opciones = opciones_existentes.unir(options_or_context)
  context = Contexto de persistencia.Nuevo(Objeto, nuevas_opciones)
  store_context(Objeto, context)
end

Detalles del método de instancia

#==(otro) ⇒ verdadero | falso

Determinar si este contexto de persistencia es igual a otro.

Ejemplos:

Compare dos contextos de persistencia.

context == other_context

Parámetros:

  • otros (Objeto) -

    El objeto a comparar con éste.

Devuelve:

  • (verdadero | falso)

    Si los dos contextos de persistencia son iguales.



154
155
156
157
# Archivo 'lib/mongoid/persistence_context.rb', línea 154

def ==(otros)
  return false a no ser que otros.is_a?(Contexto de persistencia)
  opciones == otros.opciones
end

#clienteMongo::Cliente

Obtenga el cliente para este contexto de persistencia.

Ejemplos:

Obtenga el cliente para este contexto de persistencia.

context.client

Devuelve:

  • (Mongo::Cliente)

    El cliente para este contexto de persistencia.



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Archivo 'lib/mongoid/persistence_context.rb', línea 117

def Cliente
  @cliente ||= begin
    Cliente = Clientes.con_nombre(nombre_del_cliente)
    opciones = opciones_del_cliente

    Si opción_nombre_base_datos
      Cliente = Cliente.uso(nombre_de_la_base_de_datos)
      opciones = opciones.excepto(:database, 'database')
    end

    Cliente = Cliente.con(opciones) a no ser que opciones.¿vacío?

    Cliente
  end
end

#client_nameSymbol

Obtenga el nombre del cliente para este contexto de persistencia.

Ejemplos:

Obtenga el nombre del cliente para este contexto de persistencia.

context.client_name

Devuelve:

  • ( Símbolo) -

    El nombre del cliente para este contexto de persistencia.



140
141
142
143
144
# Archivo 'lib/mongoid/persistence_context.rb', línea 140

def nombre_del_cliente
  @nombre_del_cliente ||= __evaluate__(opciones[:cliente]) ||
                     Compacto.anulación del cliente ||
                     __evaluate__(opciones_de_almacenamiento[:cliente])
end

#colección(padre = nulo) ⇒ Mongo::Collection

Obtenga la colección para este contexto de persistencia.

Ejemplos:

Obtenga la colección para este contexto de persistencia.

context.collection

Parámetros:

  • padre (Objeto) (predeterminado: nulo)

    El objeto padre cuyo nombre de colección se utiliza en lugar del nombre de colección de este contexto de persistencia.

Devuelve:

  • (Mongo::Colección)

    La colección para este contexto de persistencia.



81
82
83
84
85
# Archivo 'lib/mongoid/persistence_context.rb', línea 81

def Colección(padre = nulo)
  padre ?
    padre.Colección.con(opciones_del_cliente.excepto(:database, "base de datos")) :
    Cliente[nombre_de_colección.a_sym]
end

#nombre_de_colecciónCadena

Obtenga el nombre de la colección para este contexto de persistencia.

Ejemplos:

Obtenga el nombre de la colección para este contexto de persistencia.

context.collection_name

Devuelve:

  • (Cadena) -

    El nombre de la colección para este contexto de persistencia.



94
95
96
97
# Archivo 'lib/mongoid/persistence_context.rb', línea 94

def nombre_de_colección
  @nombre_de_colección ||= (__evaluate__(opciones[:recopilación] ||
                         opciones_de_almacenamiento[:recopilación]))
end

#nombre_de_base_de_datosCadena

Obtenga el nombre de la base de datos para este contexto de persistencia.

Ejemplos:

Obtenga el nombre de la base de datos para este contexto de persistencia.

context.database_name

Devuelve:

  • (Cadena) -

    El nombre de la base de datos para este contexto de persistencia.



106
107
108
# Archivo 'lib/mongoid/persistence_context.rb', línea 106

def nombre_de_la_base_de_datos
  __evaluate__(opción_nombre_base_datos) || Cliente.database.Nombre
end

#for_child(documento) ⇒ PersistenceContext

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 un nuevo contexto de persistencia que es coherente con el documento hijo dado, heredando los ajustes más apropiados.

Parámetros:

Devuelve:



59
60
61
62
63
64
65
66
67
68
69
# Archivo 'lib/mongoid/persistence_context.rb', línea 59

def para_niño(Documento)
  Si Documento.is_a?(Clase)
    return yo Si Documento == (@objeto.is_a?(Clase) ? @objeto : @objeto.clase)
  elsif Documento.is_a?(Mongoid::Documento)
    return yo Si Documento.clase == (@objeto.is_a?(Clase) ? @objeto : @objeto.clase)
  else
    propagar ArgumentError, 'debe especificar una clase o una instancia de documento '
  end

  Contexto de persistencia.Nuevo(Documento, opciones.unir(Documento.opciones_de_almacenamiento))
end

#opciones_de_almacenamiento_solicitadasHash | nulo

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

El subconjunto de opciones proporcionadas que pueden utilizarse como opciones de almacenamiento.

Devuelve:

  • (Hash | nulo ) —

    las opciones de almacenamiento solicitadas, o nula si no se especificó ninguna.



181
182
183
184
# Archivo 'lib/mongoid/persistence_context.rb', línea 181

def opciones_de_almacenamiento_solicitadas
  segmento = @opciones.segmento(*Mongoid::Clientes::Validadores::Almacenamiento::OPCIONES VÁLIDAS)
  segmento.any? ? segmento : nulo
end

#cliente_reutilizable?verdadero | falso

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

Si el cliente del contexto se puede reutilizar más adelante y, por lo tanto, no se debe cerrar.

Si el contexto de persistencia se solicita solo con la opción :client, significa que el contexto debe usar un cliente configurado en mongoid.yml. Estos clientes no deben cerrarse al borrar el contexto, ya que se reutilizarán posteriormente.

Devuelve:

  • (verdadero | falso)

    Verdadero si el cliente se puede reutilizar, falso en caso contrario.



170
171
172
# Archivo 'lib/mongoid/persistence_context.rb', línea 170

def reusable_client?
  @opciones.claves == [:cliente]
end