module Granite::Action::Transaction

Attributes

in_transaction[RW]

Public Instance Methods

run_callbacks(event) click to toggle source
Calls superclass method
# File lib/granite/action/transaction.rb, line 25
def run_callbacks(event)
  if event.to_s == 'commit'
    begin
      super event
    rescue *handled_exceptions => e
      handle_exception(e)
    end
  else
    super event
  end
end

Private Instance Methods

run_in_transaction() { || ... } click to toggle source
# File lib/granite/action/transaction.rb, line 49
def run_in_transaction
  self.in_transaction = true

  TransactionManager.transaction do
    TransactionManager.after_commit(self)
    yield
  end
ensure
  self.in_transaction = false
end
transaction() { || ... } click to toggle source
# File lib/granite/action/transaction.rb, line 41
def transaction(&block)
  if in_transaction
    yield
  else
    run_in_transaction(&block)
  end
end