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
20 21 22 23 24 25 26 27 |
# File 'lib/outside_transaction.rb', line 20 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
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/outside_transaction.rb', line 39 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
29 30 31 32 33 34 35 36 37 |
# File 'lib/outside_transaction.rb', line 29 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
50 51 52 53 54 |
# File 'lib/outside_transaction.rb', line 50 def transaction_with_outside_transaction(*args, &block) transaction_without_outside_transaction(*args, &block) ensure @outside_transaction = nil if open_transactions == 0 end |