Clase: Mongoid::Contextual::Mongo::DocumentsLoader Privado
- Hereda:
-
Objeto
- Objeto
- Mongoid::Contextual::Mongo::DocumentsLoader
- Ampliado por:
- Reenviable
- Incluye:
- Asociación::EagerLoadable
- Definido en:
- lib/mongoid/contextual/mongo/documentos_loader.rb
Overview
Esta clase forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Carga documentos según los criterios proporcionados.
Colapso delresumen de atributos de instancia
-
#criteria ⇒ Mongoid::Criteria
privada
Criterios que especifican qué documentos deben cargarse.
Colapso delresumen del método de clase
-
.ejecutor(nombre = Mongoid.async_query_executor) ⇒ Concurrente::ImmediateExecutor | Concurrente::ThreadPoolExecutor
privada
Devuelve el ejecutor adecuado según las opciones de configuración de Mongoid.
-
. ejecutorde consultas asíncronas de grupo de subprocesos global ⇒ Ejecutor de grupo de subprocesos concurrente
privada
Devuelve el ejecutor asincrónico que se utilizará cuando la opción de configuración async_query_executor esté establecida en :global_thread_pool.
-
.ejecutor_inmediato ⇒ Concurrente::EjecutorInmediato
privada
Devuelve el ejecutor sincrónico que se utilizará cuando la opción de configuración async_query_executor esté establecida en :immediate.
Colapso del resumen del método de instancia
-
#ejecutar ⇒ Array<Mongoid::Document>
privada
Carga registros especificados por '@criteria` desde la base de datos y los convierte en documentos Mongoid de tipo '@klass`.
-
#inicializar(vista, clase, criterios, ejecutor: self.class.executor) ⇒ DocumentsLoader
constructor
privada
Crea una instancia del cargador de documentos y programa inmediatamente su ejecución utilizando el ejecutor proporcionado.
-
#pendiente? ⇒ verdadero | falso
privada
Devuelve falso o verdadero si el cargador está en estado pendiente.
-
#¿iniciado? ⇒ verdadero | falso
privada
Devuelve falso o verdadero si el cargador está en estado iniciado.
-
#unschedule ⇒ objeto
privada
Marcar el cargador como no programado.
Métodos incluidos en Association::EagerLoadable
#carga_ansiosa, #cargable_ansiosa?, #precarga
Detalles del constructor
#inicializar(vista, clase, criterios, ejecutor: self.class.executor) ⇒ DocumentsLoader
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Crea una instancia del cargador de documentos y programa inmediatamente su ejecución utilizando el ejecutor proporcionado.
89 90 91 92 93 94 95 96 97 98 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 89 def inicializar(vista, klass, criterios, ejecutor: yo.clase.ejecutor) @view = vista @klass = klass @criteria = criterios @mutex = Mutex.Nuevo @estado = :pendiente @futuro = Concurrente::Promesas.future_on(ejecutor) hacer Inicio && ejecutar end end |
Detalles de los atributos de instancia
#criteria ⇒ Mongoid::Criteria
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 los criterios que especifican qué documentos deben ser cargados. Se expone aquí porque el método ‘eager_loadable?’ de `Association::EagerLoadable` espera que esto esté disponible.
75 76 77 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 75 def criterios @criteria end |
Detalles del método de clase
.ejecutor(nombre = Mongoid.async_query_executor) ⇒ Concurrente::ImmediateExecutor | Concurrente::ThreadPoolExecutor
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 el ejecutor adecuado según las opciones de configuración de Mongoid.
61 62 63 64 65 66 67 68 69 70 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 61 def yo.ejecutor(Nombre = Mongoid.ejecutor de consultas asíncronas) caso Nombre.a_sym Cuando :inmediato ejecutor inmediato Cuando :grupo de subprocesos global ejecutor de consultas asíncronas del grupo de subprocesos global else propagar Errors::InvalidQueryExecutor.Nuevo(Nombre) end end |
. ejecutor de consultas asíncronasde grupo de subprocesos global ⇒ Ejecutor de grupo de subprocesos concurrente
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 el ejecutor asincrónico que se usará cuando la opción de configuración async_query_executor esté establecida en :global_thread_pool. Este ejecutor ejecuta operaciones en subprocesos en segundo plano mediante un grupo de subprocesos.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 32 def yo.ejecutor de consultas asíncronas del grupo de subprocesos global crear_pool = Proc.Nuevo hacer |Simultaneidad| Concurrente::Ejecutor del grupo de subprocesos.Nuevo( min_threads: 0, máximo_hilos: Simultaneidad, cola máxima: Simultaneidad * 4, política de respaldo: :el que llama se ejecuta ) end Simultaneidad = Mongoid.concurrencia_del_ejecutor_global || 4 Ejecutor de consultas asíncronas de @@global_thread_pool ||= crear_pool.llamada(Simultaneidad) Si Ejecutor de consultas asíncronas de @@global_thread_pool.longitud máxima != Simultaneidad piscina vieja = Ejecutor de consultas asíncronas de @@global_thread_pool Ejecutor de consultas asíncronas de @@global_thread_pool = crear_pool.llamada(Simultaneidad) piscina vieja.shutdown end Ejecutor de consultas asíncronas de @@global_thread_pool end |
.ejecutor_inmediato ⇒ Concurrente::EjecutorInmediato
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 el ejecutor síncrono que se usará cuando la opción de configuración async_query_executor esté establecida en :immediate. Este ejecutor ejecuta todas las operaciones en el hilo actual, bloqueándose según sea necesario.
22 23 24 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 22 def yo.ejecutor inmediato @@ejecutor_inmediato ||= Concurrente::Ejecutor inmediato.Nuevo end |
Detalles del método de instancia
#ejecutar ⇒ Array
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Carga registros especificados por '@criteria` desde la base de datos y los convierte en documentos Mongoid de tipo '@klass`.
Este método es llamado por la tarea (posiblemente asíncrona) programada al crear una instancia del cargador. Sin embargo, se puede llamar directamente si se desea ejecutar la carga inmediatamente en el hilo que lo llama.
Llamar a este método no cambia el estado del cargador.
152 153 154 155 156 157 158 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 152 def ejecutar Documentos = @view.map hacer |doc| Fábrica.desde_db(@klass, doc, @criteria) end carga ansiosa(Documentos) Si ¿ansioso_cargable? Documentos end |
#pendiente? ⇒ 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.
Devuelve falso o verdadero si el cargador está en estado pendiente.
El estado pendiente significa que la ejecución del cargador se ha programado, pero aún no se ha iniciado.
107 108 109 110 111 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 107 def ¿pendiente? @mutex.sincronizar hacer @estado == :pendiente end end |
#¿iniciado? ⇒ 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.
Devuelve falso o verdadero si el cargador está en estado iniciado.
El estado iniciado significa que la ejecución del cargador ha comenzado. Tenga en cuenta que el cargador permanece en este estado incluso después de que la ejecución se complete (con éxito o sin éxito).
121 122 123 124 125 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 121 def ¿comenzó? @mutex.sincronizar hacer @estado == :comenzó end end |
#desprogramar ⇒ 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.
Marcar el cargador como no programado.
Si el cargador está marcado como no programado, no se ejecutará. La única opción para cargar los documentos es llamar directamente al método "execute".
Tenga en cuenta que si la ejecución de una tarea ya se ha iniciado, la desprogramación no tendrá ningún efecto.
134 135 136 137 138 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 134 def no programado @mutex.sincronizar hacer @estado = :cancelado a no ser que @estado == :comenzó end end |