Module: ARAfterTransaction::ClassMethods
- Defined in:
- lib/ar_after_transaction.rb
Class Method Summary collapse
Instance Method Summary collapse
- #after_transaction(&block) ⇒ Object
- #normally_open_transactions ⇒ Object
- #normally_open_transactions=(value) ⇒ Object
- #transaction_with_after(*args) ⇒ Object
Class Method Details
.extended(base) ⇒ Object
6 7 8 9 10 11 12 13 |
# File 'lib/ar_after_transaction.rb', line 6 def self.extended( base ) base.class_eval do class << self alias_method :transaction_without_after, :transaction alias_method :transaction, :transaction_with_after end end end |
Instance Method Details
#after_transaction(&block) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/ar_after_transaction.rb', line 35 def after_transaction(&block) if transactions_open? connection.after_transaction_callbacks ||= [] connection.after_transaction_callbacks << block else yield end end |
#normally_open_transactions ⇒ Object
44 45 46 |
# File 'lib/ar_after_transaction.rb', line 44 def normally_open_transactions @@normally_open_transactions ||= 0 end |
#normally_open_transactions=(value) ⇒ Object
48 49 50 |
# File 'lib/ar_after_transaction.rb', line 48 def normally_open_transactions=(value) @@normally_open_transactions = value end |
#transaction_with_after(*args) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/ar_after_transaction.rb', line 15 def transaction_with_after(*args) clean = true transaction_without_after(*args) do begin yield rescue ActiveRecord::Rollback clean = false raise end end rescue Exception clean = false raise ensure unless transactions_open? callbacks = delete_after_transaction_callbacks callbacks.each(&:call) if clean end end |