Module: ARAfterTransaction::ClassMethods

Defined in:
lib/ar_after_transaction.rb

Constant Summary collapse

@@after_transaction_callbacks =
[]

Instance Method Summary collapse

Instance Method Details

#after_transaction(&block) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/ar_after_transaction.rb', line 21

def after_transaction(&block)
  if transactions_open?
    @@after_transaction_callbacks << block
  else
    yield
  end
end

#normally_open_transactionsObject



29
30
31
# File 'lib/ar_after_transaction.rb', line 29

def normally_open_transactions
  @@normally_open_transactions ||= 0
end

#normally_open_transactions=(value) ⇒ Object



33
34
35
# File 'lib/ar_after_transaction.rb', line 33

def normally_open_transactions=(value)
  @@normally_open_transactions = value
end

#transaction(*args, &block) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/ar_after_transaction.rb', line 8

def transaction(*args, &block)
  clean = true
  super
rescue Exception
  clean = false
  raise
ensure
  unless transactions_open?
    callbacks = delete_after_transaction_callbacks
    callbacks.each(&:call) if clean
  end
end