Módulo: Mongoid::Clients::Sessions::ClassMethods
- Incluído em:
- Mongoid
- Definido em:
- lib/mongoid/clients/sessions.rb
Colapsode resumo constante
- CALLBACK_ACTIONS =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.
Ações que podem ser usadas para trigger chamadas de resposta transacionais.
%i[criar destruir update]
Recolhimento do Resumo do método de instância
-
#after_commit(*args, &block) ➤ Objeto
Define que um chamada de resposta de chamada é chamado após a confirmação de uma transação.
-
#after_create_commit(*args, &block) ➤ Objeto
Atalho para
after_commit :hook, on: :create. -
#after_destroy_commit(*args, &block) ➤ Objeto
Atalho para
after_commit :hook, on: :destroy. -
#after_rollback(*args, &block) ➤ Objeto
Esse chamada de resposta de chamada é chamado depois que uma criação, atualização ou destruição é revertida.
-
#after_save_commit(*args, &block) ➤ Objeto
Atalho para
after_commit :hook, on: [ :create, :update ]. -
#after_update_commit(*args, &block) ➤ Objeto
Atalho para
after_commit :hook, on: :update. -
#transaction(options = { }, session_options: { }) { ... } ➤ Object
Executa um bloco dentro do contexto de uma transação.
-
#with_session(opções = {}) {|The| ... } ➤ Objeto
Execute um bloco dentro do contexto de uma sessão.
Detalhes do método de instância
#after_commit(*args, &block) ➤ Objeto
Define que um chamada de resposta de chamada é chamado após a confirmação de uma transação. A chamada de resposta de resposta é chamada somente se o documento for criado, atualizado ou destruído na transação.
Consulte ActiveSupport::Callbacks::ClassMethods::set_callback para mais informações sobre parâmetros de método e possíveis opções.
108 109 110 111 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 108 def after_commit(*Args, &noum: bloco ; verb: bloquear) (Args) set_callback(:commit, :after, *Args, &noum: bloco ; verb: bloquear) end |
#after_create_commit(*args, &block) ➤ Objeto
Atalho para after_commit :hook, on: :create.
120 121 122 123 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 120 def after_create_commit(*Args, &noum: bloco ; verb: bloquear) (Args, em: :create) set_callback(:commit, :after, *Args, &noum: bloco ; verb: bloquear) end |
#after_destroy_commit(*args, &block) ➤ Objeto
Atalho para after_commit :hook, on: :destroy.
132 133 134 135 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 132 def after_destroy_commit(*Args, &noum: bloco ; verb: bloquear) (Args, em: :destroy) set_callback(:commit, :after, *Args, &noum: bloco ; verb: bloquear) end |
#after_rollback(*args, &block) ➤ Objeto
Esse chamada de resposta de chamada é chamado depois que uma criação, atualização ou destruição é revertida.
Verifique a documentação do after_commit para opções.
140 141 142 143 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 140 def after_rollback(*Args, &noum: bloco ; verb: bloquear) (Args) set_callback(:rollback, :after, *Args, &noum: bloco ; verb: bloquear) end |
#after_save_commit(*args, &block) ➤ Objeto
Atalho para after_commit :hook, on: [ :create, :update ]
114 115 116 117 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 114 def after_save_commit(*Args, &noum: bloco ; verb: bloquear) (Args, em: %i[criar update]) set_callback(:commit, :after, *Args, &noum: bloco ; verb: bloquear) end |
#after_update_commit(*args, &block) ➤ Objeto
Atalho para after_commit :hook, on: :update.
126 127 128 129 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 126 def after_update_commit(*Args, &noum: bloco ; verb: bloquear) (Args, em: :update) set_callback(:commit, :after, *Args, &noum: bloco ; verb: bloquear) end |
#transaction(options = { }, session_options: { }) { ... } ➤ Object
Executa um bloco dentro do contexto de uma transação.
Se o bloqueio não gerar um erro, a transação será confirmada. Se um erro for gerado, a transação será abortada. O erro é passado, exceto para Mongoid::Errors::Rollback. Este erro não é repassado, então você pode levantá-lo se quiser fazer o rollback da transação deliberadamente.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 83 def transação( = {}, session_options: {}, &noum: bloco ; verb: bloquear) with_session() fazer |session| session.with_transaction(, &noum: bloco ; verb: bloquear).toque { run_commit_callbacks(session) } salvar *transactions_not_supported_Exceptions aumentar Mongoid::Errors::TransactionsNotSupported salvar Mongoid::Errors::Rollback run_abort_callbacks(session) salvar Mongoid::Errors::InvalidSessionNesting # A sessão deve ser encerrada aqui. aumentar Mongoid::Errors::InvalidTransactionNesting.Novo salvar mongo::Erro::Sessão inválida, mongo::Erro::Operação de transação inválida => e run_abort_callbacks(session) aumentar Mongoid::Errors::TransactionError.Novo(e) salvar StandardError => e run_abort_callbacks(session) aumentar e end end |
#with_session(opções = {}) {|The| ... } ➤ Objeto
Execute um bloco dentro do contexto de uma sessão.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 38 def with_session( = {}) aumentar Mongoid::Errors::InvalidSessionNesting.Novo se Threaded.get_session(cliente: persistence_context.Cliente) session = persistence_context.Cliente.start_session() Threaded.set_session(session, cliente: persistence_context.Cliente) rendimento(session) salvar mongo::Erro::Sessão inválida => e aumentar Mongoid::Errors::SessionsNotSupported.Novo se e.is_a?(mongo::Erro::SessionsNotSupported) aumentar e salvar mongo::Erro::Falha de operação => e se (e.código == 40_415 && e. =~ /startTransaction/) || (e.código == 20 && e. =~ /Transação/) aumentar Mongoid::Errors::TransactionsNotSupported.Novo mais aumentar e end salvar *transactions_not_supported_Exceptions aumentar Mongoid::Errors::TransactionsNotSupported garantir Threaded.clear_modified_documents(session) Threaded.clear_session(cliente: persistence_context.Cliente) end |