Class: Mongoid::Contextual::Mongo::DocumentsLoader Privado
- Hereda:
-
Objeto
- Objeto
- Mongoid::Contextual::Mongo::DocumentsLoader
- Ampliado por:
- Reenviable
- Incluye:
- Asociación::Cargable ansioso
- Definido en:
- lib/mongoid/contextual/mongo/documents_loader.rb
Overview
Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.
Carga documentos con los criterios proporcionados.
Resumen de atributos de la instancia colapsar
-
#criteria ⇒ Mongoid::Criteria
privado
Criterios que especifican qué documentos deben cargarse.
Resumen del método de clase colapsar
-
.ejecutor(nombre = Mongoid.async_query_executor) ⇒ Concurrent::ImmediateExecutor | Concurrent::ThreadPoolExecutor
privado
Devuelve el executor adecuado según las opciones de configuración de Mongoid.
-
.global_thread_pool_async_query_executor ⇒ Concurrent::ThreadPoolExecutor
privado
Devuelve el ejecutor asincrónico que se utilizará cuando la opción de configuración async_query_executor esté configurada en :global_thread_pool.
-
.immediate_executor ⇒ Concurrent::ImmediateExecutor
privado
Devuelve el ejecutor síncrono para utilizar cuando la opción de configuración async_query_executor está configurada en :immediate.
Resumen del método de instancia colapsar
-
#ejecutar ⇒ arreglo<Mongoid::Document>
privado
Carga los registros especificados por
@criteriadesde la base de datos y los convierte en Mongoid document del tipo@klass. -
#initialize(vista, clase, criterios, ejecutor: self.class.executor) ⇒ DocumentsLoader
constructor
privado
Inicializa la instancia del cargador de documentos y programa inmediatamente su ejecución utilizando el ejecutor proporcionado.
-
#¿pendiente? ⇒ verdadero | falso
privado
Devuelve false o true si el cargador está en estado pendiente.
-
#¿comenzar? ⇒ verdadero | falso
privado
Devuelve falso o verdadero según si el cargador está en estado iniciado.
-
#unschedule ⇒ objeto
privado
Marca la cargadora como no programada.
Métodos incluidos desde Association::EagerLoadable
#crear_pipeline, #carga_rápida, #carga_rápida_con_búsqueda, #cargable_rápidamente?, #precarga, #precarga_para_búsqueda, #intercambiar_campos_locales_y_extranjeros?
Detalles del Constructor
#initialize(vista, clase, criterios, ejecutor: self.class.executor) ⇒ DocumentsLoader
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.
Inicializa la instancia del cargador de documentos y programa inmediatamente su ejecución utilizando el ejecutor proporcionado.
88 89 90 91 92 93 94 95 96 97 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 88 def inicializar(vista, klass, criterios, ejecutor: sí mismo.clase.ejecutor) @view = vista @klass = klass @criteria = criterios @mutex = Mutex (exclusión mutua).Nuevo @state = :pendiente @futuro = simultáneo::Promesas.future_on(ejecutor) hacer Inicio && ejecutar end end |
Detalles de atributo de instancias
#criteria ⇒ Mongoid::Criteria
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 criterios que especifican qué document deben cargarse. Se expone aquí porque el método eager_loadable? de Association::EagerLoadable espera que esto esté disponible.
74 75 76 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 74 def criterios @criteria end |
Detalles del método de clase
.executor(name = Mongoid.async_query_executor) ⇒ Concurrent::ImmediateExecutor | Concurrent::ThreadPoolExecutor
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 el executor adecuado según las opciones de configuración de Mongoid.
60 61 62 63 64 65 66 67 68 69 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 60 def sí mismo.ejecutor(Nombre = Mongoid.async_query_executor) caso Nombre.to_sym cuando inmediato immediate_executor cuando :global_thread_pool global_thread_pool_async_query_executor else propagar Errors::InvalidQueryExecutor.Nuevo(Nombre) end end |
.global_thread_pool_async_query_executor ⇒ Concurrent::ThreadPoolExecutor
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 ejecutor asíncrono que se utilizará cuando la opción de configuración async_query_executor esté configurada en :global_thread_pool. Este ejecutor ejecuta operaciones en hilos de segundo plano utilizando un grupo de hilos.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 31 def sí mismo.global_thread_pool_async_query_executor create_pool = proc hacer |Simultaneidad| simultáneo::ThreadPoolExecutor.Nuevo( min_threads: 0, max_threads: Simultaneidad, max_queue: Simultaneidad * 4, fallback_policy: llamador_ejecuta ) end Simultaneidad = Mongoid.concurrencia_global_executor || 4 @@global_thread_pool_async_query_executor ||= create_pool.llamar(Simultaneidad) si @@global_thread_pool_async_query_executor.max_length != Simultaneidad old_pool = @@global_thread_pool_async_query_executor @@global_thread_pool_async_query_executor = create_pool.llamar(Simultaneidad) old_pool.shutdown end @@global_thread_pool_async_query_executor end |
.immediate_executor ⇒ Concurrent::ImmediateExecutor
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 ejecutor síncrono para usar cuando la opción de configuración async_query_executor está configurada en :immediate. Este ejecutor ejecuta todas las operaciones en el hilo actual, bloqueando según sea necesario.
21 22 23 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 21 def sí mismo.immediate_executor @@immediate_executor ||= simultáneo::ImmediateExecutor.Nuevo end |
Detalles del método de instancia
#ejecutar ⇒ arreglo<Mongoid::documento>
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.
Carga los registros especificados por @criteria desde la base de datos y los convierte en Mongoid document del tipo @klass.
Este método es llamado por la tarea (posiblemente asíncrona) programada al crear una instancia del cargador. Sin embargo, este método puede ser llamado directamente, si se desea ejecutar la carga inmediatamente en el hilo llamante.
Llamar a este método no cambia el estado del cargador.
151 152 153 154 155 156 157 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 151 def ejecutar Documentos = @view.map hacer |doc| Fábrica.from_db(@klass, doc, @criteria) end eager_load(Documentos) si eager_loadable? Documentos end |
#¿pendiente? ⇒ verdadero | falso
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 false o true si el cargador está en estado pendiente.
El estado pendiente significa que la ejecución del cargador ha sido programada, pero aún no ha comenzado.
106 107 108 109 110 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 106 def ¿pendiente? @mutex.sincronizar hacer @state == :pendiente end end |
#¿comenzó? ⇒ 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.
Devuelve falso o verdadero según si el cargador está en estado iniciado.
Estado iniciado significa que se ha iniciado la ejecución del cargador. Tenga en cuenta que el cargador permanece en este estado incluso después de que la ejecución haya finalizado (con éxito o haya fallado).
120 121 122 123 124 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 120 def ¿Has comenzado? @mutex.sincronizar hacer @state == :iniciado end end |
#desprogramar ⇒ Objeto
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.
Marca la cargadora como no programada.
Si el cargador está marcado como no programado, no se ejecutará. La única opción para cargar los documentos es llamar al método execute directamente.
Tenga en cuenta que si la ejecución de una tarea ya se ha iniciado, la desprogramación no tiene ningún efecto.
133 134 135 136 137 |
# Archivo 'lib/mongoid/contextual/mongo/documents_loader.rb', línea 133 def desprogramar @mutex.sincronizar hacer @state = Cancelado a menos que @state == :iniciado end end |