method
within_new_transaction
v6.0.0 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters::TransactionManager
within_new_transaction(options = {})public
No documentation available.
# File activerecord/lib/active_record/connection_adapters/abstract/transaction.rb, line 277
def within_new_transaction(options = {})
@connection.lock.synchronize do
transaction = begin_transaction options
yield
rescue Exception => error
if transaction
rollback_transaction
after_failure_actions(transaction, error)
end
raise
ensure
if !error && transaction
if Thread.current.status == "aborting"
rollback_transaction
else
begin
commit_transaction
rescue Exception
rollback_transaction(transaction) unless transaction.state.completed?
raise
end
end
end
end
end