Módulo: Mongoid::Threaded
- Estendido por:
- Threaded
- Incluído em:
- Threaded
- Definido em:
- lib/mongoid/threaded.rb,
lib/mongoid/threaded/Lifecycle.rb
Visão geral
Este módulo contém lógica para facilitar o acesso a objetos que têm um ciclo de vida no thread atual.
Definido sob namespace
Módulos: Ciclo de vida
Colapsode resumo constante
- DATABASE_OVERRIDE_KEY =
'[mongoid]:db-override'
- CLIENTS_KEY =
Constante para a chave para armazenar clientes.
'[mongoid]:clientes'
- CLIENT_OVERRIDE_KEY =
A chave para substituir o cliente.
'[mongoid]:client-override'
- CURRENT_SCOPE_KEY =
A chave para a pilha de escopo do thread atual.
'[mongoid]:current-scope'
- AUTOSAVES_KEY =
'[mongoid]:autosave'
- VALIDATIONS_KEY =
'[mongoid]:validations'
- STACK_KEYS =
Hash.Novo fazer |hash, chave| hash[chave] = "[mongoid]:#{key}-stack" end
- SESSIONS_KEY =
A chave para as sessões do tópico atual.
'[mongoid]:sessions'
- ModIFIED_DOCUMENTS_KEY =
A chave para armazenar documentos modificada dentro de transações.
'[mongoid]:modified-documents'
- EXECUTAR_CALLBACKS =
A chave que armazena o valor padrão para saber se as chamadas de resposta são ou não executadas em documentos.
'[mongoid]:execute-callbacks'
- BIND =
'vincular'.congelar
- Atribuir =
'atribuir'.congelar
- Construir =
'build'.congelar
- CARREGAR =
'load'.congelar
- CREATE =
'criar'.congelar
Recolhimento do Resumo do método de instância
-
#add_modified_document(session, document) ⇒ Object
Armazene uma referência ao documento que foi modificado dentro de uma transação associada à sessão.
-
#salvo automaticamente?(documento) ➤ true | false
O documento é salvo automaticamente no thread atual?
-
#autosaves ⇒ Hash
Obter todos os salvamentos automáticos no thread atual.
-
#autosaves_for(klass) ⇒ Array
Obter todos os salvamentos automáticos no thread atual da classe.
-
#begin_autosave(document) ⇒ Object
Iniciar o salvamento automático de um documento no thread atual.
-
#begin_execution(name) ➤ true
Iniciar a entrada em uma pilha local de thread nomeado.
-
#begin_validate(documento) ➤ Objeto
Começar a validar um documento no thread atual.
-
#begin_without_default_scope(klass) ➤ Objeto
privado
Comece a suprimir os escopos padrão para um determinado modelo na thread atual.
-
#clear_modified_documents(session) ⇒ Set<Mongoid::Document>
Limpa o conjunto de documentos modificados para a sessão fornecida e retorna o conteúdo do conjunto antes da liberação.
-
#clear_session(client: nil) ⇒ nil
Limpe a sessão em cache desta thread para um cliente.
-
#client_override ➤ string | Símbolo
Obtenha a substituição global do cliente.
-
#client_override=(nome) ➤ string | Símbolo
Defina a substituição do cliente global.
-
#current_scope(klass = nil) ➤ Critérios
Obtenha o escopo Mongoide atual.
-
#current_scope=(scope) ➤ Critérios
Defina o escopo do Mongoid atual.
-
#database_override ➤ string | Símbolo
Obtenha a substituição do banco de dados de dados global.
-
#database_override=(nome) ➤ string | Símbolo
Defina a substituição global do banco de dados de dados.
-
#execute_callbacks=(sinalizador) ➤ Objeto
Indica se as chamadas de resposta do documento devem ser invocadas por padrão para o thread atual.
-
#execute_callbacks? ➤ verdadeiro | false
Consulta se os retornos de chamada de documento devem ser executados por padrão para o tópico atual.
-
#executando?(nome) ➤ verdadeiro
Estão no meio da execução da pilha nomeada.
-
#exit_autosave(documento) ➤ Objeto
Sair do salvamento automático de um documento no thread atual.
-
#exit_execution(name) ➤ true
Sair de uma pilha local de thread nomeado.
-
#exit_validate(documento) ➤ Objeto
Sair da validação de um documento no thread atual.
-
#exit_without_default_scope(klass) ➤ Objeto
privado
Sair da supressão de escopos padrão para um determinado modelo na thread atual.
-
#get_session(client: nil) ⇒ Mongo::Session | nil
Obtenha a sessão em cache para este thread para um cliente.
-
#modified_documents ➤ Hash<Mongo::Session, Set<Mongoid::Document>>
privado
Retorna o armazenamento de threads de documentos modificados.
-
# desessões ➤ Hash<Integer, Set>
privado
Retorna o armazenamento de threads de sessões.
-
#set_current_scope(scope, klass) ➤ Critérios
Defina o escopo do Mongoid atual.
-
#set_session(sessão, cliente: nil) ➤ Objeto
Armazene em cache uma sessão para este thread para um cliente.
-
#pilha(nome) ➤ Array
Obtenha a pilha nomeada.
-
#validado?(documento) ➤ true | false
O documento é validado no thread atual?
-
#validations ⇒ Hash
Obtenha todas as validações no thread atual.
-
#validations_for(klass) ⇒ Array
Obtenha todas as validações no thread atual da classe.
-
#sem_default_scope?(klass) ➤ booleano
privado
O escopo padrão do klass fornecido é suprimido no thread atual?
Detalhes do método de instância
#add_modified_document(session, document) ⇒ Object
Armazene uma referência ao documento que foi modificado dentro de uma transação associada à sessão.
365 366 367 368 369 |
# Arquivo 'lib/mongoid/threaded.rb', linha 365 def add_modified_document(session, documento) Método a menos que session&.in_transaction? modified_documents[session] << documento end |
#salvo automaticamente?(documento) ➤ true | false
O documento é salvo automaticamente no thread atual?
264 265 266 |
# Arquivo 'lib/mongoid/threaded.rb', linha 264 def salvo automaticamente?(documento) autosaves_for(documento.classe).incluir?(documento._id) end |
#autosaves ➤ Hash
Obter todos os salvamentos automáticos no thread atual.
286 287 288 |
# Arquivo 'lib/mongoid/threaded.rb', linha 286 def salvamento automático Thread.Current[AUTOSAVES_KEY] ||= {} end |
#autosaves_for(klass) ⇒ Array
Obter todos os salvamentos automáticos no thread atual da classe.
308 309 310 |
# Arquivo 'lib/mongoid/threaded.rb', linha 308 def autosaves_for(classe) salvamento automático[classe] ||= [] end |
#begin_autosave(document) ⇒ Object
Iniciar o salvamento automático de um documento no thread atual.
115 116 117 |
# Arquivo 'lib/mongoid/threaded.rb', linha 115 def begin_autosave(documento) autosaves_for(documento.classe).push(documento._id) end |
#begin_execution(name) ➤ true
Iniciar a entrada em uma pilha local de thread nomeado.
47 48 49 |
# Arquivo 'lib/mongoid/threaded.rb', linha 47 def begin_execution(name) pilha(name).push(true) end |
#begin_validate(documento) ➤ Objeto
Começar a validar um documento no thread atual.
125 126 127 |
# Arquivo 'lib/mongoid/threaded.rb', linha 125 def begin_validate(documento) validations_for(documento.classe).push(documento._id) end |
#begin_without_default_scope(klass) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Comece a suprimir os escopos padrão para um determinado modelo na thread atual.
157 158 159 |
# Arquivo 'lib/mongoid/threaded.rb', linha 157 def begin_without_default_scope(classe) pilha(:without_default_scope).push(classe) end |
.
Limpa o conjunto de documentos modificados para a sessão fornecida e retorna o conteúdo do conjunto antes da liberação.
378 379 380 381 382 |
# Arquivo 'lib/mongoid/threaded.rb', linha 378 def clear_modified_documents(session) modified_documents[session].dup garantir modified_documents[session].Limpar end |
#clear_session(client: nil) ⇒ nil
Para compatibilidade com versões anteriores, é permitido chamar este método sem
Limpe a sessão em cache desta thread para um cliente.
especificando o parâmetro ' cliente'.
355 356 357 |
# Arquivo 'lib/mongoid/threaded.rb', linha 355 def clear_session(cliente: nada) sessões.excluir(Cliente)&.end_session end |
#client_override ➤ string | Símbolo
Obtenha a substituição global do cliente.
179 180 181 |
# Arquivo 'lib/mongoid/threaded.rb', linha 179 def client_override Thread.Current[CLIENT_OVERRIDE_KEY] end |
#client_override=(nome) ➤ string | Símbolo
Defina a substituição do cliente global.
191 192 193 |
# Arquivo 'lib/mongoid/threaded.rb', linha 191 def client_override=(name) Thread.Current[CLIENT_OVERRIDE_KEY] = name end |
#current_scope(klass = nil) ➤ Critérios
Obtenha o escopo Mongoide atual.
204 205 206 207 208 209 210 211 212 |
# Arquivo 'lib/mongoid/threaded.rb', linha 204 def current_scope(classe = nada) se classe && Thread.Current[CURRENT_SCOPE_KEY].respond_to?(:keys) Thread.Current[CURRENT_SCOPE_KEY][ Thread.Current[CURRENT_SCOPE_KEY].keys.find { |k| k <= classe } ] mais Thread.Current[CURRENT_SCOPE_KEY] end end |
#current_scope=(scope) ➤ Critérios
Defina o escopo do Mongoid atual.
222 223 224 |
# Arquivo 'lib/mongoid/threaded.rb', linha 222 def current_scope=(escopo) Thread.Current[CURRENT_SCOPE_KEY] = escopo end |
#database_override ➤ string | Símbolo
Obtenha a substituição do banco de dados de dados global.
57 58 59 |
# Arquivo 'lib/mongoid/threaded.rb', linha 57 def database_override Thread.Current[DATABASE_OVERRIDE_KEY] end |
#database_override=(nome) ➤ string | Símbolo
Defina a substituição global do banco de dados de dados.
69 70 71 |
# Arquivo 'lib/mongoid/threaded.rb', linha 69 def database_override=(name) Thread.Current[DATABASE_OVERRIDE_KEY] = name end |
#execute_callbacks=(sinalizador) ➤ Objeto
Indica se as chamadas de resposta do documento devem ser invocadas por padrão para o thread atual. Documentos individuais podem substituir ainda mais o comportamento de retorno de chamada, mas isso será usado para o comportamento padrão.
406 407 408 |
# Arquivo 'lib/mongoid/threaded.rb', linha 406 def execute_callbacks=(flag) Thread.Current[EXECUTAR_CALLBACKS] = flag end |
#execute_callbacks? ➤ verdadeiro | false
Consulta se os retornos de chamada de documento devem ser executados por padrão para o tópico atual.
A menos que indicado de outra forma (por #execute_callbacks=), isso retornará verdadeiro.
392 393 394 395 396 397 398 |
# Arquivo 'lib/mongoid/threaded.rb', linha 392 def execute_callbacks? se Thread.Current.chave?(EXECUTAR_CALLBACKS) Thread.Current[EXECUTAR_CALLBACKS] mais true end end |
#executando?(nome) ➤ verdadeiro
Estão no meio da execução da pilha nomeada
81 82 83 |
# Arquivo 'lib/mongoid/threaded.rb', linha 81 def executando?(name) !pilha(name).vazio? end |
#exit_autosave(document) ➤ Objeto
Sair do salvamento automático de um documento no thread atual.
135 136 137 |
# Arquivo 'lib/mongoid/threaded.rb', linha 135 def exit_autosave(documento) autosaves_for(documento.classe).delete_one(documento._id) end |
#exit_execution(name) ➤ true
Sair de uma pilha local de thread nomeado.
93 94 95 |
# Arquivo 'lib/mongoid/threaded.rb', linha 93 def exit_execution(name) pilha(name).Pop end |
#exit_validate(documento) ➤ Objeto
Sair da validação de um documento no thread atual.
145 146 147 |
# Arquivo 'lib/mongoid/threaded.rb', linha 145 def exit_validate(documento) validations_for(documento.classe).delete_one(documento._id) end |
#exit_without_default_scope(klass) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Sair da supressão de escopos padrão para um determinado modelo na thread atual.
169 170 171 |
# Arquivo 'lib/mongoid/threaded.rb', linha 169 def exit_without_default_scope(classe) pilha(:without_default_scope).excluir(classe) end |
#get_session(client: nil) ⇒ Mongo::Session | nil
Para compatibilidade com versões anteriores, é permitido chamar este método sem
Obtenha a sessão em cache para este thread para um cliente.
especificando o parâmetro ' cliente'.
343 344 345 |
# Arquivo 'lib/mongoid/threaded.rb', linha 343 def get_session(cliente: nada) sessões[Cliente] end |
#modified_documents ➤ Hash<Mongo::Session, Set<Mongoid::Document>>
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna o armazenamento de threads de documentos modificados.
425 426 427 428 429 |
# Arquivo 'lib/mongoid/threaded.rb', linha 425 def modified_documents Thread.Current[ModIFIED_DOCUMENTS_KEY] ||= Hash.Novo fazer |H, k| H[k] = definir.Novo end end |
# desessões ➤ Hash<Integer, Set>
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna o armazenamento de threads de sessões.
415 416 417 |
# Arquivo 'lib/mongoid/threaded.rb', linha 415 def sessões Thread.Current[SESSIONS_KEY] ||= {}.compare_by_identity end |
#set_current_scope(scope, klass) ➤ Critérios
Defina o escopo do Mongoid atual. Seguro para encadeamento de escopo de vários modelos.
235 236 237 238 239 240 241 242 |
# Arquivo 'lib/mongoid/threaded.rb', linha 235 def set_current_scope(escopo, classe) se escopo.nada? unset_current_scope(classe) mais Thread.Current[CURRENT_SCOPE_KEY] ||= {} Thread.Current[CURRENT_SCOPE_KEY][classe] = escopo end end |
#set_session(sessão, cliente: nil) ➤ Objeto
Para compatibilidade com versões anteriores, é permitido chamar este método sem
Armazene em cache uma sessão para este thread para um cliente.
especificando o parâmetro ' cliente'.
331 332 333 |
# Arquivo 'lib/mongoid/threaded.rb', linha 331 def set_session(session, cliente: nada) sessões[Cliente] = session end |
#pilha(nome) ➤ Array
Obtenha a pilha nomeada.
105 106 107 |
# Arquivo 'lib/mongoid/threaded.rb', linha 105 def pilha(name) Thread.Current[STACK_KEYS[name]] ||= [] end |
#validado?(documento) ➤ true | false
O documento é validado no thread atual?
276 277 278 |
# Arquivo 'lib/mongoid/threaded.rb', linha 276 def validado?(documento) validations_for(documento.classe).incluir?(documento._id) end |
#validações ➤ Hash
Obtenha todas as validações no thread atual.
296 297 298 |
# Arquivo 'lib/mongoid/threaded.rb', linha 296 def Validações Thread.Current[VALIDATIONS_KEY] ||= {} end |
#validations_for(klass) ⇒ Array
Obtenha todas as validações no thread atual da classe.
320 321 322 |
# Arquivo 'lib/mongoid/threaded.rb', linha 320 def validations_for(classe) Validações[classe] ||= [] end |
#sem_default_scope?(klass) ➤ booleano
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
O escopo padrão do klass fornecido é suprimido no thread atual?
252 253 254 |
# Arquivo 'lib/mongoid/threaded.rb', linha 252 def sem_default_scope?(classe) pilha(:without_default_scope).incluir?(classe) end |