# File lib/active_record/connection_adapters/abstract/database_statements.rb, line 43 def transaction(start_db_transaction = true) transaction_open = false begin if block_given? if start_db_transaction begin_db_transaction transaction_open = true end yield end rescue Exception => database_transaction_rollback if transaction_open transaction_open = false rollback_db_transaction end raise end ensure commit_db_transaction if transaction_open end