Clase: Mongoid::PersistenceContext

Hereda:
Objeto
  • Objeto
Mostrar todo
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.

Devuelve:

  • (arreglo<Symbol>)

    La lista de opciones extra además de las opciones del cliente 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.

Devuelve:

  • (arreglo<Symbol>)

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

(mongo::Cliente::VALID_OPTIONS + EXTRA_OPTIONS).freeze

Resumen de atributos de la instancia colapsar

Resumen del método de clase colapsar

Resumen del método de instancia colapsar

Detalles del Constructor

#initialize(objeto, opts = {}) ⇒ PersistenceContext

Inicializa el objeto de contexto de persistencia.

Ejemplos:

Crea un nuevo contexto de persistencia.

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

Parámetros:

  • Objeto (objeto)

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

  • opciones (encriptada) (por defecto: {})

    Las opciones del contexto de persistencia.



43
44
45
46
# Archivo 'lib/mongoid/persistence_context.rb', línea 43

def inicializar(Objeto, opciones = {})
  @object = Objeto
  set_options!(opciones)
end

Detalles de atributo de instancias

#opcionesHash (solo lectura)

Las opciones que definen este contexto de persistencia.

Devuelve:

  • (encriptada)

    Las opciones del contexto de persistencia.



18
19
20
# Archivo 'lib/mongoid/persistence_context.rb', línea 18

def opciones
  @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.

Ejemplos:

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

PersistenceContext.clear(model)

Parámetros:

  • Objeto (Clase | Objeto)

    La clase o instancia del modelo.

  • clúster (Mongo::clúster) (valor por defecto: nil)

    El clúster original antes de que se utilizara este contexto.

  • original_context (Mongoid::PersistenceContext) (valor por defecto: nil)

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



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.

Ejemplos:

Obtén el contexto de persistencia para una clase o instancia de modelo.

PersistenceContext.get(model)

Parámetros:

  • Objeto (objeto)

    La clase o instancia del modelo.

Devuelve:



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.

Ejemplos:

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

PersistenceContext.set(model)

Parámetros:

  • Objeto (objeto)

    La clase o instancia del modelo.

  • options_or_context (Hash | Mongoid::PersistenceContext)

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

Devuelve:



232
233
234
235
236
237
238
239
240
241
242
243
# Archivo 'lib/mongoid/persistence_context.rb', línea 232

def Configura(Objeto, options_or_context)
  existing_context = get_context(Objeto)
  existing_options = si existing_context
                       existing_context.opciones
                     else
                       {}
                     end
  options_or_context = options_or_context.opciones si options_or_context.is_a?(PersistenceContext)
  nuevas_opciones = existing_options.fusionar(options_or_context)
  context = PersistenceContext.Nuevo(Objeto, nuevas_opciones)
  store_context(Objeto, context)
end

Detalles del método de instancia

#==(another) ⇒ verdadero | falso

Determine si este contexto de persistencia es igual a otro.

Ejemplos:

Compara dos contextos de persistencia.

context == other_context

Parámetros:

  • Otros (objeto)

    El objeto a comparar con este.

Devuelve:

  • (true | false)

    Si los dos contextos de persistencia son iguales.



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)

  opciones == Otros.opciones
end

#clienteMongo::Client

Obtén el cliente para este contexto de persistencia.

Ejemplos:

Obtén el cliente para este contexto de persistencia.

context.client

Devuelve:

  • (Mongo::Client)

    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)
    opciones = client_options

    si database_name_option
      Cliente = Cliente.Usar(database_name)
      opciones = opciones.excepto(:database, 'database')
    end

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

    Cliente
  end
end

#client_nameSymbol

Obtén el nombre del cliente para este contexto de persistencia.

Ejemplos:

Obtén el nombre del cliente para este contexto de persistencia.

context.client_name

Devuelve:

  • (Símbolo)

    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__(opciones[cliente]) ||
                   Con hilo.client_override ||
                   __evaluate__(opciones_de_almacenamiento[cliente])
end

#colección(parent = nil) ⇒ 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) (valor por defecto: nil)

    El objeto principal 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.



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(client_options.excepto(:database, 'database'))
  else
    Cliente[nombre_colección.to_sym]
  end
end

#collection_nameString

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

Ejemplos:

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

context.collection_name

Devuelve:

  • (string)

    El nombre de 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__(opciones[colección] ||
                         opciones_de_almacenamiento[colección])
end

#nombre_base_de_datosstring

Obtén el nombre de la base de datos para este contexto de persistencia.

Ejemplos:

Obtén el nombre de la base de datos para este contexto de persistencia.

context.database_name

Devuelve:

  • (string)

    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.

Parámetros:

Devuelve:



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, opciones.fusionar(Documento.opciones_de_almacenamiento))
end

#requested_storage_optionsHash | 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.

Devuelve:

  • (Hash | nil)

    las opciones de almacenamiento solicitadas, o nil si no se especifica ninguna.



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

def requested_storage_options
  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.

Devuelve:

  • (true | false)

    Verdadero si el cliente puede reutilizarse, de lo contrario, falso.



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

def reusable_client?
  @options.claves == [ cliente ]
end