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.
[:create, :destroy, :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.
119 120 121 122 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 119 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.
131 132 133 134 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 131 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.
143 144 145 146 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 143 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.
151 152 153 154 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 151 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 ]
125 126 127 128 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 125 def after_save_commit(*Args, &noum: bloco ; verb: bloquear) (Args, em: [ :create, :update ]) set_callback(:commit, :after, *Args, &noum: bloco ; verb: bloquear) end |
#after_update_commit(*args, &block) ➤ Objeto
Atalho para after_commit :hook, on: :update.
137 138 139 140 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 137 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 o 'Mongoid::Errors::Rollback'. Este erro não é repassado, então você pode levantá-lo se quiser reverter a transação deliberadamente.
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 90 def transação( = {}, session_options: {}) with_session() fazer |session| começar session.with_transaction() fazer rendimento end.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 end |
#with_session(opções = {}) {|The| ... } ➤ Objeto
Execute um bloco dentro do contexto de uma sessão.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# Arquivo 'lib/mongoid/clients/sessions.rb', linha 42 def with_session( = {}) se Threaded.get_session(cliente: persistence_context.Cliente) aumentar Mongoid::Errors::InvalidSessionNesting.Novo end session = persistence_context.Cliente.start_session() Threaded.set_session(session, cliente: persistence_context.Cliente) rendimento(session) salvar mongo::Erro::Sessão inválida => ex se mongo::Erro::SessionsNotSupported === ex aumentar Mongoid::Errors::SessionsNotSupported.Novo mais aumentar ex end salvar mongo::Erro::Falha de operação => ex se (ex.código == 40415 && ex. =~ /startTransaction/) || (ex.código == 20 && ex. =~ /Transação/) aumentar Mongoid::Errors::TransactionsNotSupported.Novo mais aumentar ex end salvar *transactions_not_supported_Exceptions aumentar Mongoid::Errors::TransactionsNotSupported garantir Threaded.clear_modified_documents(session) Threaded.clear_session(cliente: persistence_context.Cliente) end |