Module: OutsideTransaction::Connection
- Defined in:
- lib/outside_transaction.rb
Class Method Summary collapse
Instance Method Summary collapse
- #commit_db_transaction_with_outside_transaction ⇒ Object
- #outside_transaction(&block) ⇒ Object
- #transaction_with_outside_transaction(*args, &block) ⇒ Object
Class Method Details
.included(base) ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'lib/outside_transaction.rb', line 24 def self.included(base) unless base.method_defined? :commit_db_transaction_without_outside_transaction base.alias_method_chain :commit_db_transaction, :outside_transaction end unless base.method_defined? :transaction_without_outside_transaction base.alias_method_chain :transaction, :outside_transaction end end |
Instance Method Details
#commit_db_transaction_with_outside_transaction ⇒ Object
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/outside_transaction.rb', line 43 def commit_db_transaction_with_outside_transaction outside_transaction_actions = @outside_transaction @outside_transaction = nil commit_db_transaction_without_outside_transaction if outside_transaction_actions outside_transaction_actions.each do |block| block.call end end end |
#outside_transaction(&block) ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'lib/outside_transaction.rb', line 33 def outside_transaction(&block) if block_given? if open_transactions == 0 || !::OutsideTransaction.enabled? block.call else (@outside_transaction ||= []) << block end end end |
#transaction_with_outside_transaction(*args, &block) ⇒ Object
54 55 56 57 58 |
# File 'lib/outside_transaction.rb', line 54 def transaction_with_outside_transaction(*args, &block) transaction_without_outside_transaction(*args, &block) ensure @outside_transaction = nil if open_transactions == 0 end |