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

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)
  ¡establecer_opciones_para_devoluciones_de_llamadas!(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)
  ¡establecer_opciones_para_devoluciones_de_llamadas!(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)
  ¡establecer_opciones_para_devoluciones_de_llamadas!(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)
  ¡establecer_opciones_para_devoluciones_de_llamadas!(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)
  ¡establecer_opciones_para_devoluciones_de_llamadas!(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)
  ¡establecer_opciones_para_devoluciones_de_llamadas!(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.

Parámetros:

  • opciones (Hash) (predeterminado: {})

    Opciones de transacción. Consulte la documentación del controlador para conocer las opciones de sesión disponibles.

  • session_options (Hash) (predeterminado: {})

    Opciones de sesión. Una transacción de MongoDB debe iniciarse dentro de una sesión; por lo tanto, se iniciará una sesión. Consulte la documentación del controlador para conocer las opciones de sesión disponibles.

Rendimientos:

  • El bloque proporcionado se ejecutará dentro de una transacción.

Aumentos:



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(opciones = {}, session_options: {})
  con_sesión(session_options) hacer |sesión|
    begin
      sesión.con_transacción(opciones) 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.

Ejemplos:

Ejecutar algunas operaciones en el contexto de una sesión.

Band.with_session(causal_consistency: true) do
  band = Band.create
  band.records << Record.new
  band.save
  band.reload.records
end

Parámetros:

  • opciones (Hash) (predeterminado: {})

    Opciones de sesión. Consulte la documentación del controlador para conocer las opciones de sesión disponibles.

Parámetros de rendimiento:

  • El (Mongo::Sesión)

    sesión que se está utilizando para el bloque.

Devuelve:

  • (Objeto) -

    El resultado de llamar al bloque.

Aumentos:

  • (Errores::Usode sesión no válido)

    Si se intenta realizar una operación en un modelo utilizando otro cliente desde el que se inició la sesión o si las sesiones están anidadas.



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(opciones = {})
  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(opciones)
  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.mensaje del servidor =~ /startTransaction/) ||
     (ex.Código == 20 && ex.mensaje del servidor =~ /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