Sha256: 1fa0f0f416335fec192a88c5654130ba6c23e033d2cb02218b49efd15fd86f0e
Contents?: true
Size: 909 Bytes
Versions: 18
Compression:
Stored size: 909 Bytes
Contents
module Effective class AfterCommit def initialize(**handlers) @handlers = handlers end def has_transactional_callbacks? true end def trigger_transactional_callbacks? true end def before_committed!(*) @handlers[:before_commit]&.call end def committed!(args) @handlers[:after_commit]&.call end def rolledback!(*) @handlers[:after_rollback]&.call end def self.register_callback(connection:, name:, callback:) raise ArgumentError, "#{name} expected a block" unless callback raise("#{name} is useless outside transaction") unless connection.transaction_open? raise("#{name} is useless outside transaction") unless connection.current_transaction.joinable? after_commit = Effective::AfterCommit.new("#{name}": callback) connection.add_transaction_record(after_commit) end end end
Version data entries
18 entries across 18 versions & 1 rubygems