Sha256: 423a8873f1cced96dc3c27dd4ab4c6343c996a63069e83b99427bde9b4a4b4b9

Contents?: true

Size: 875 Bytes

Versions: 3

Compression:

Stored size: 875 Bytes

Contents

require 'active_record'

module ActiveRecord::AfterTransaction
  module Methods
    def self.included(klass)
      klass.class_eval do
        after_commit :execute_after_transaction
        after_rollback :clear_after_transaction
      end
    end

    def after_transaction(&block)
      return block.call unless self.class.connection.open_transactions
      @after_transaction_queue ||= []
      @after_transaction_queue.push block
      logger && logger.debug("Push #{block}")
    end

    def execute_after_transaction
      logger && logger.debug("Execute the queue")
      @after_transaction_queue.each do |block|
        logger && logger.debug("Execute #{block}")
        block.call
      end
      clear_after_transaction
    end

    def clear_after_transaction
      logger && logger.debug("Clear the queue")
      @after_transaction_queue.clear
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
activerecord-after-transaction-0.0.3 lib/activerecord-after-transaction/methods.rb
activerecord-after-transaction-0.0.2 lib/activerecord-after-transaction/methods.rb
activerecord-after-transaction-0.0.1 lib/activerecord-after-transaction/methods.rb