class EM::Synchrony::ActiveRecord::TransactionManager
def _current_stack
def _current_stack @stack[Fiber.current.object_id] end
def begin_transaction(options = {}) #:nodoc:
def begin_transaction(options = {}) #:nodoc: transaction = if _current_stack.empty? ::ActiveRecord::ConnectionAdapters::RealTransaction.new(@connection, options) else ::ActiveRecord::ConnectionAdapters::SavepointTransaction.new(@connection, "active_record_#{Fiber.current.object_id}_#{open_transactions}", options) end _current_stack.push(transaction) transaction end
def commit_transaction #:nodoc:
def commit_transaction #:nodoc: _current_stack.pop.commit end
def current_transaction #:nodoc:
def current_transaction #:nodoc: _current_stack.last || NULL_TRANSACTION end
def initialize(*args)
def initialize(*args) super @stack = Hash.new { |h, k| h[k] = [] } end
def open_transactions
def open_transactions _current_stack.size end
def rollback_transaction #:nodoc:
def rollback_transaction #:nodoc: _current_stack.pop.rollback end