Clase: Mongoide::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.

Colapso delresumen constante

EXTRA_OPTIONS =

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,
  colección,
  :opciones_de_colección
].freeze
VALID_OPTIONS =

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

Devuelve:

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

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

( Mongo::Cliente::OPCIONES VÁLIDAS + 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.

  • opta (Hash) (por defecto: {})

    Las opciones del 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:

  • (encriptada)

    Las opciones del contexto de persistencia.



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

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 instancia de clase o modelo.

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

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

  • original_context (Mongoid::PersistenceContext) (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, original_context = nulo)
  si context = Obtener(Objeto)
    a menos que clúster.nil? || context.clúster.¿igual?(clúster)
      context.Cliente.Cerrar a menos que context.reusable_client?
    end
  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 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

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 instancia de clase o modelo.

  • options_or_context (Hash | Mongoid::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?(PersistenceContext)
    options_or_context = options_or_context.opciones
  end
  nuevas_opciones = opciones_existentes.fusionar(options_or_context)
  context = PersistenceContext.Nuevo(Objeto, nuevas_opciones)
  store_context(Objeto, context)
end

Detalles del método de instancia

#==(otro) ⇒ 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.



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

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.



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 database_name_option
      Cliente = Cliente.Usar(nombre_de_la_base_de_datos)
      opciones = opciones.excepto(:database, 'database')
    end

    Cliente = Cliente.con(opciones) a menos 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
  @client_name ||= __evaluate__(opciones[cliente]) ||
                     Compacto.anulación del cliente ||
                     __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) (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_colección.to_sym]
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.



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

def nombre_colección
  @collection_name ||= (__evaluate__(opciones[colección] ||
                         opciones_de_almacenamiento[colección]))
end

#nombre_de_base_de_datosCadena

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.



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

def nombre_de_la_base_de_datos
  __evaluate__(database_name_option) || Cliente.database.Nombre
end

#for_child(document) ⇒ 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 for_child(Documento)
  si Documento.is_a?(clase)
    return sí mismo si Documento == (@objeto.is_a?(clase) ? @objeto : @objeto.clase)
  elsif Documento.is_a?(Mongoid::Documento)
    return sí mismo si Documento.clase == (@objeto.is_a?(clase) ? @objeto : @objeto.clase)
  else
    propagar ArgumentError, 'debe especificar una clase o una instancia de documento'
  end

  PersistenceContext.Nuevo(Documento, opciones.fusionar(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 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 opciones_de_almacenamiento_solicitadas
  rebanada = @options.rebanada(*Mongoid::Clientes::Validadores::Almacenamiento::OPCIONES VÁLIDAS)
  rebanada.any? ? rebanada : nulo
end

#cliente_reutilizable?true | false

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 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 usar un cliente configurado en mongoid.yml. Estos clientes no deben cerrarse al borrar el contexto, ya que se reutilizarán posteriormente.

Devuelve:

  • (true | false)

    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?
  @options.claves == [cliente]
end