module AfterCommitAction

Public Instance Methods

_after_commit_hook() click to toggle source
# File lib/after_commit_action.rb, line 30
def _after_commit_hook
  begin
    until @_execute_after_commit.blank?
      @_execute_after_commit.shift.call
    end
  rescue => e
    if defined?(Exceptional)
      # Rails quietly swallows exceptions in after-commit actions; to avoid missing these
      # exceptions, we pass them to Exceptional explicitly
      Exceptional.context(:after_commit_entity => self.inspect)
      Exceptional.handle(e, "execute_after_commit")
    else
      Rails.logger.error "Error in execute_after_commit block: #{e.inspect}"
    end
    raise e
  end
end
execute_after_commit(&block) click to toggle source
# File lib/after_commit_action.rb, line 19
def execute_after_commit(&block)
  if self.class.connection.open_transactions == 0
    return block.call
  else
    self.class.connection.add_transaction_record(self)
  end

  @_execute_after_commit ||= []
  @_execute_after_commit<< block
end