Module: Onceler::Transactions

Included in:
ActiveRecord::TestFixtures, Recorder
Defined in:
lib/onceler/transactions/active_record_3.rb,
lib/onceler/transactions/active_record_4.rb

Instance Method Summary collapse

Instance Method Details

#begin_transaction(conn) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/onceler/transactions/active_record_3.rb', line 3

def begin_transaction(conn)
  unless conn.instance_variable_get(:@_current_transaction_records)
    conn.instance_variable_set(:@_current_transaction_records, [])
  end
  if conn.open_transactions == 0
    conn.transaction_joinable = false
    conn.begin_db_transaction
  else
    conn.create_savepoint
  end
  conn.increment_open_transactions
end

#rollback_transaction(conn) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/onceler/transactions/active_record_3.rb', line 16

def rollback_transaction(conn)
  conn.decrement_open_transactions
  if conn.open_transactions == 0
    conn.rollback_db_transaction
    conn.send :rollback_transaction_records, true
  else
    conn.rollback_to_savepoint
    conn.send :rollback_transaction_records, false
  end
end