Módulo: Mongoid::Clientes::Sesiones::Métodos de clase

Incluido en:
Mongoid
Definido en:
lib/mongoid/clients/sessions.rb

Colapso delresumen constante

CALLBACK_ACTIONS =

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 llamada transaccionales.

[crear:, :destroy, :update]

Resumen del método de instancia colapsar

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(Commit, después de, *args, Ybloque)
end

#after_create_commit(*args, &block) ⇒ Object

Atajo para after_commit:hook, on::create.



131
132
133
134
# Archivo 'lib/mongoid/clients/sessions.rb', línea 131

def after_create_commit(*args, Ybloque)
  ¡establecer_opciones_para_devoluciones_de_llamadas!(args, on: crear:)
  establecer_devolución de llamada(Commit, después de, *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 after_destroy_commit(*args, Ybloque)
  ¡establecer_opciones_para_devoluciones_de_llamadas!(args, on: :destroy)
  establecer_devolución de llamada(Commit, después de, *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.

Consulta la documentación de after_commit para conocer las opciones disponibles.



151
152
153
154
# Archivo 'lib/mongoid/clients/sessions.rb', línea 151

def after_rollback(*args, Ybloque)
  ¡establecer_opciones_para_devoluciones_de_llamadas!(args)
  establecer_devolución de llamada(:rollback, después de, *args, Ybloque)
end

#after_save_commit(*args, &block) ⇒ Object

Acceso directo a after_commit :hook, on: [ :create, :actualizar ]



125
126
127
128
# Archivo 'lib/mongoid/clients/sessions.rb', línea 125

def after_save_commit(*args, Ybloque)
  ¡establecer_opciones_para_devoluciones_de_llamadas!(args, on: [ crear:, :update ])
  establecer_devolución de llamada(Commit, después de, *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 after_update_commit(*args, Ybloque)
  ¡establecer_opciones_para_devoluciones_de_llamadas!(args, on: :update)
  establecer_devolución de llamada(Commit, después de, *args, Ybloque)
end

#transacción(options = {}, session_options: {}) { ... } ⇒ 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 produce un error, la transacción se cancela. El error se transmite a excepción de 'Mongoid::Errors::Rollback`. Este error no se transmite, por lo que puedes lanzarlo si deseas deliberadamente el rollback de la transacción.

Parámetros:

  • opciones (Hash) (por defecto: {})

    Las opciones de transacción. Por favor, consulta la documentación del driver para conocer las opciones de sesión disponibles.

  • session_options (Hash) (por defecto: {})

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

Rendimientos:

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

Aumenta:



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.tocar { run_commit_callbacks(sesión) }
    rescate *transactions_not_supported_exceptions
      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 finalizarse aquí.
      propagar Mongoid::Errors::InvalidTransactionNesting.Nuevo
    rescate Mongo::Error::InvalidSession, Mongo::Error::OperaciónTransacciónInválida => e
      ejecutar_abortar_devoluciones_de_llamadas(sesión)
      propagar Mongoid::Errors::TransactionError.Nuevo(e)
    rescate StandardError => e
      ejecutar_abortar_devoluciones_de_llamadas(sesión)
      propagar e
    end
  end
end

#con_sesión(opciones = {}) {|El| ... } ⇒ Objeto

Ejecuta 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) (por defecto: {})

    Las opciones de la sesión. Por favor, consulta la documentación del driver para conocer las opciones de sesión disponibles.

Parámetros de rendimiento:

  • La (Mongo::Session)

    sesión en uso para el bloque.

Devuelve:

  • (objeto)

    El resultado de llamar al bloque.

Aumenta:

  • (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.get_session(cliente: persistence_context.Cliente)
    propagar Mongoid::Errors::InvalidSessionNesting.Nuevo
  end
  sesión = persistence_context.Cliente.start_session(opciones)
  Compacto.set_session(sesión, cliente: persistence_context.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::OperationFailure => 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 *transactions_not_supported_exceptions
  propagar Mongoid::Errors::transacciones no admitidas
asegurar
  Compacto.borrar_documentos_modificados(sesión)
  Compacto.clear_session(cliente: persistence_context.Cliente)
end