Module: Isolationable

Extended by:
ActiveSupport::Concern
Defined in:
app/models/concerns/isolationable.rb

Instance Method Summary collapse

Instance Method Details

#run_in_transaction(retry_times: 10, level: :repeatable_read, &block) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'app/models/concerns/isolationable.rb', line 4

def run_in_transaction(retry_times: 10, level: :repeatable_read, &block)
  if Rails.env.test?
    ActiveRecord::Base.transaction(&block)
  else
    ActiveRecord::Base.transaction isolation: level, &block
  end
rescue ActiveRecord::SerializationFailure => e
  retry_times -= 1
  if retry_times.positive?
    retry
  else
    raise ActiveRecord::SerializationFailure
  end
end