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 |