Class: EM::Synchrony::ActiveRecord::TransactionManager
- Inherits:
-
ActiveRecord::ConnectionAdapters::TransactionManager
- Object
- ActiveRecord::ConnectionAdapters::TransactionManager
- EM::Synchrony::ActiveRecord::TransactionManager
- Defined in:
- lib/em-synchrony/activerecord_4_2.rb
Instance Method Summary collapse
-
#begin_transaction(options = {}) ⇒ Object
:nodoc:.
-
#commit_transaction ⇒ Object
:nodoc:.
-
#current_transaction ⇒ Object
:nodoc:.
-
#initialize(*args) ⇒ TransactionManager
constructor
A new instance of TransactionManager.
- #open_transactions ⇒ Object
-
#rollback_transaction ⇒ Object
:nodoc:.
Constructor Details
#initialize(*args) ⇒ TransactionManager
Returns a new instance of TransactionManager.
22 23 24 25 |
# File 'lib/em-synchrony/activerecord_4_2.rb', line 22 def initialize(*args) super @stack = Hash.new { |h, k| h[k] = [] } end |
Instance Method Details
#begin_transaction(options = {}) ⇒ Object
:nodoc:
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/em-synchrony/activerecord_4_2.rb', line 35 def begin_transaction( = {}) #:nodoc: transaction = if _current_stack.empty? ::ActiveRecord::ConnectionAdapters::RealTransaction.new(@connection, ) else ::ActiveRecord::ConnectionAdapters::SavepointTransaction.new(@connection, "active_record_#{Fiber.current.object_id}_#{open_transactions}", ) end _current_stack.push(transaction) transaction end |
#commit_transaction ⇒ Object
:nodoc:
46 47 48 |
# File 'lib/em-synchrony/activerecord_4_2.rb', line 46 def commit_transaction #:nodoc: _current_stack.pop.commit end |
#current_transaction ⇒ Object
:nodoc:
27 28 29 |
# File 'lib/em-synchrony/activerecord_4_2.rb', line 27 def current_transaction #:nodoc: _current_stack.last || NULL_TRANSACTION end |
#open_transactions ⇒ Object
31 32 33 |
# File 'lib/em-synchrony/activerecord_4_2.rb', line 31 def open_transactions _current_stack.size end |
#rollback_transaction ⇒ Object
:nodoc:
50 51 52 |
# File 'lib/em-synchrony/activerecord_4_2.rb', line 50 def rollback_transaction #:nodoc: _current_stack.pop.rollback end |