module ActiveRecordRetriable::ClassMethods

Public Instance Methods

transaction(retry_on: nil, num_retries: Rails.configuration.active_record.default_transaction_retries, before_retry: nil, **options, &block) click to toggle source
Calls superclass method
# File lib/active_record_retriable/retriable.rb, line 18
def transaction(retry_on: nil,
                num_retries: Rails.configuration.active_record.default_transaction_retries,
                before_retry: nil,
                **options, &block)
  return super(**options, &block) if retry_on.blank?

  retry_on = Array.wrap(retry_on)
  total_retries = num_retries
  num_retries = 0
  begin
    super(**options, &block)
  rescue *retry_on => e
    num_retries += 1
    if total_retries.nil? || num_retries <= total_retries
      before_retry&.call(num_retries, e)
      retry
    end
    raise
  end
end