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

Version Path
effective_resources-1.12.0 app/models/effective/after_commit.rb
effective_resources-1.11.0 app/models/effective/after_commit.rb
effective_resources-1.10.1 app/models/effective/after_commit.rb
effective_resources-1.10.0 app/models/effective/after_commit.rb
effective_resources-1.9.19 app/models/effective/after_commit.rb
effective_resources-1.9.18 app/models/effective/after_commit.rb
effective_resources-1.9.17 app/models/effective/after_commit.rb
effective_resources-1.9.16 app/models/effective/after_commit.rb
effective_resources-1.9.15 app/models/effective/after_commit.rb
effective_resources-1.9.14 app/models/effective/after_commit.rb
effective_resources-1.9.13 app/models/effective/after_commit.rb
effective_resources-1.9.12 app/models/effective/after_commit.rb
effective_resources-1.9.11 app/models/effective/after_commit.rb
effective_resources-1.9.10 app/models/effective/after_commit.rb
effective_resources-1.9.9 app/models/effective/after_commit.rb
effective_resources-1.9.8 app/models/effective/after_commit.rb
effective_resources-1.9.7 app/models/effective/after_commit.rb
effective_resources-1.9.6 app/models/effective/after_commit.rb