Method: Effective::AfterCommit.register_callback

Defined in:
app/models/effective/after_commit.rb

.register_callback(connection:, name:, callback:) ⇒ Object

Raises:

  • (ArgumentError)


28
29
30
31
32
33
34
35
36
37
38
# File 'app/models/effective/after_commit.rb', line 28

def self.register_callback(connection:, name:, callback:)
  raise ArgumentError, "#{name} expected a block" unless callback

  in_transaction = (connection.transaction_open? && connection.current_transaction.joinable?)

  # Execute immediately when outside transaction
  return callback.call unless in_transaction

  after_commit = Effective::AfterCommit.new("#{name}": callback)
  connection.add_transaction_record(after_commit)
end