Módulo: Mongoid::Clientes::Sesiones::Métodos de clase
- Incluido en:
- Mongoid
- Definido en:
- lib/mongoid/clients/sessions.rb
Colapso delresumen constante
- ACCIONES DE DEVOLUCIÓN DE LLAMADA =
Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Acciones que se pueden utilizar para activar devoluciones de llamadas transaccionales.
[:crear, :destruir, :update]
Colapso del resumen del método de instancia
-
#after_commit(*args, &block) ⇒ Objeto
Configura una devolución de llamada que se llama después de una confirmación de una transacción.
-
#after_create_commit(*args, &block) ⇒ Objeto
Atajo para after_commit:hook, on::create.
-
#after_destroy_commit(*args, &block) ⇒ Objeto
Atajo para after_commit:hook, on::destroy.
-
#after_rollback(*args, &block) ⇒ Objeto
Esta función de retorno se llama después de que se revoque una creación, actualización o eliminación.
-
#after_save_commit(*args, &block) ⇒ Objeto
Atajo para after_commit:hook, on: [:create,:update ].
-
#after_update_commit(*args, &block) ⇒ Objeto
Atajo para after_commit:hook, on::update.
-
#transacción(opciones = {}, opciones_de_sesión: {}) {... } ⇒ Objeto
Ejecuta un bloque dentro del contexto de una transacción.
-
#with_session(opciones = {}) {|El|... } ⇒ Objeto
Ejecutar un bloque dentro del contexto de una sesión.
Detalles del método de instancia
#after_commit(*args, &block) ⇒ Objeto
Configura una función de retorno que se llama después de una confirmación de una transacción. La función de retorno se llama solo si el documento se crea, actualiza o destruye en la transacción.
Consulta ActiveSupport::Callbacks::ClassMethods::set_callback para obtener más información sobre los parámetros del método y las posibles opciones.
119 120 121 122 |
# Archivo 'lib/mongoid/clients/sessions.rb', línea 119 def después de confirmar(*args, Ybloque) (args) establecer_devolución de llamada(:comprometerse, :después, *args, Ybloque) end |
#after_create_commit(*args, &block) ⇒ Objeto
Atajo para after_commit:hook, on::create.
131 132 133 134 |
# Archivo 'lib/mongoid/clients/sessions.rb', línea 131 def después de crear la confirmación(*args, Ybloque) (args, en: :crear) establecer_devolución de llamada(:comprometerse, :después, *args, Ybloque) end |
#after_destroy_commit(*args, &block) ⇒ Objeto
Atajo para after_commit:hook, on::destroy.
143 144 145 146 |
# Archivo 'lib/mongoid/clients/sessions.rb', línea 143 def después de destruir la confirmación(*args, Ybloque) (args, en: :destruir) establecer_devolución de llamada(:comprometerse, :después, *args, Ybloque) end |
#after_rollback(*args, &block) ⇒ Objeto
Esta función de retorno se llama después de que se revoque una creación, actualización o eliminación.
Consulte la documentación de after_commit para conocer las opciones.
151 152 153 154 |
# Archivo 'lib/mongoid/clients/sessions.rb', línea 151 def después de la reversión(*args, Ybloque) (args) establecer_devolución de llamada(:rollback, :después, *args, Ybloque) end |
#after_save_commit(*args, &block) ⇒ Objeto
Atajo para after_commit:hook, on: [:create,:update ]
125 126 127 128 |
# Archivo 'lib/mongoid/clients/sessions.rb', línea 125 def después de guardar la confirmación(*args, Ybloque) (args, en: [ :crear, :update ]) establecer_devolución de llamada(:comprometerse, :después, *args, Ybloque) end |
#after_update_commit(*args, &block) ⇒ Objeto
Atajo para after_commit:hook, on::update.
137 138 139 140 |
# Archivo 'lib/mongoid/clients/sessions.rb', línea 137 def después de la confirmación de actualización(*args, Ybloque) (args, en: :update) establecer_devolución de llamada(:comprometerse, :después, *args, Ybloque) end |
#transacción(opciones = {}, opciones_de_sesión: {}) {... } ⇒ Objeto
Ejecuta un bloque dentro del contexto de una transacción.
Si el bloque no genera un error, la transacción se confirma. Si se genera un error, la transacción se cancela. El error se transmite, excepto "Mongoid::Errors::Rollback". Este error no se transmite, por lo que puede generarlo si desea revertir la transacción deliberadamente.
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# Archivo 'lib/mongoid/clients/sessions.rb', línea 90 def transacción( = {}, session_options: {}) con_sesión() hacer |sesión| begin sesión.con_transacción() hacer rendimiento end.grifo { devoluciones de llamadas de confirmación de ejecución(sesión) } rescate *excepciones_de_transacciones_no_admitidas propagar Mongoid::Errors::Transacciones no admitidas rescate Mongoid::Errors::Rollback ejecutar_abortar_devoluciones_de_llamadas(sesión) rescate Mongoid::Errors::InvalidSessionNesting # La sesión debe finalizar aquí. propagar Mongoid::Errors::InvalidTransactionNesting.Nuevo rescate Mongo::Error::InvalidSession, Mongo::Error::Operación de transacción no válida => e ejecutar_abortar_devoluciones_de_llamadas(sesión) propagar Mongoid::Errors::TransactionError.Nuevo(e) rescate Error estándar => e ejecutar_abortar_devoluciones_de_llamadas(sesión) propagar e end end end |
#with_session(opciones = {}) {|El|... } ⇒ Objeto
Ejecutar un bloque dentro del contexto de una sesión.
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 |
# Archivo 'lib/mongoid/clients/sessions.rb', línea 42 def con_sesión( = {}) Si Compacto.obtener_sesión(cliente: contexto de persistencia.Cliente) propagar Mongoid::Errors::InvalidSessionNesting.Nuevo end sesión = contexto de persistencia.Cliente.inicio_sesión() Compacto.set_session(sesión, cliente: contexto de persistencia.Cliente) rendimiento(sesión) rescate Mongo::Error::InvalidSession => ex Si Mongo::Error::SessionsNotSupported === ex propagar Mongoid::Errors::SessionsNotSupported.Nuevo else propagar ex end rescate Mongo::Error::Operación fallida => ex Si (ex.Código == 40415 && ex. =~ /startTransaction/) || (ex.Código == 20 && ex. =~ /Transacción/) propagar Mongoid::Errors::Transacciones no admitidas.Nuevo else propagar ex end rescate *excepciones_de_transacciones_no_admitidas propagar Mongoid::Errors::Transacciones no admitidas asegurar Compacto.borrar_documentos_modificados(sesión) Compacto.clear_session(cliente: contexto de persistencia.Cliente) end |