Module: RaceGuard::ActiveRecord::TransactionPatch

Defined in:
lib/race_guard/active_record.rb

Overview

Prepended onto ActiveRecord::Base.singleton_class.

Instance Method Summary collapse

Instance Method Details

#transaction(*args, **kwargs, &block) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/race_guard/active_record.rb', line 17

def transaction(*args, **kwargs, &block)
  return super(*args, **kwargs) unless block

  RaceGuard.context.begin_transaction
  success = false
  begin
    super(*args, **kwargs, &block) # rubocop:disable Style/SuperArguments -- bare super breaks nested AR
    success = true
  rescue StandardError
    success = false
    raise
  ensure
    RaceGuard.context.end_transaction(success: success)
  end
end