module ActiveRecord::AfterTransaction::Methods
Public Class Methods
included(klass)
click to toggle source
# File lib/activerecord-after-transaction/methods.rb, line 5 def self.included(klass) klass.class_eval do after_commit :execute_after_transaction after_rollback :clear_after_transaction end end
Public Instance Methods
after_transaction(&block)
click to toggle source
# File lib/activerecord-after-transaction/methods.rb, line 12 def after_transaction(&block) return block.call if self.class.connection.open_transactions == 0 self.class.connection.add_transaction_record self @after_transaction_queue ||= [] @after_transaction_queue.push block logger && logger.debug("Push #{block}") end
Private Instance Methods
clear_after_transaction()
click to toggle source
# File lib/activerecord-after-transaction/methods.rb, line 36 def clear_after_transaction logger && logger.debug("Clear the queue") @after_transaction_queue ||= [] @after_transaction_queue.clear end
execute_after_transaction()
click to toggle source
# File lib/activerecord-after-transaction/methods.rb, line 23 def execute_after_transaction queue = @after_transaction_queue ||= [] if !queue.empty? logger && logger.debug("Execute the queue") queue = queue.dup clear_after_transaction queue.each do |block| logger && logger.debug("Execute #{block}") block.call end end end