method
within_new_transaction
v5.2.3 -
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 235
def within_new_transaction(options = {})
@connection.lock.synchronize do
begin
transaction = begin_transaction options
yield
rescue Exception => error
if transaction
rollback_transaction
after_failure_actions(transaction, error)
end
raise
ensure
unless error
if Thread.current.status == "aborting"
rollback_transaction if transaction
else
begin
commit_transaction if transaction
rescue Exception
rollback_transaction(transaction) unless transaction.state.completed?
raise
end
end
end
end
end
end