Sha256: 41a5fe3b69fbdff54d7354329208c76e158074bb57cdceec3c4ce6b4518a8461

Contents?: true

Size: 414 Bytes

Versions: 6

Compression:

Stored size: 414 Bytes

Contents

require "imap/backup/logger"

module Imap; end

module Imap::Backup
  module RetryOnError
    def retry_on_error(errors:, limit: 10, on_error: nil)
      tries ||= 1
      yield
    rescue *errors => e
      if tries < limit
        message = "#{e}, attempt #{tries} of #{limit}"
        Logger.logger.debug message
        on_error&.call
        tries += 1
        retry
      end
      raise e
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
imap-backup-14.4.4 lib/imap/backup/retry_on_error.rb
imap-backup-14.4.3 lib/imap/backup/retry_on_error.rb
imap-backup-14.4.1 lib/imap/backup/retry_on_error.rb
imap-backup-14.4.0 lib/imap/backup/retry_on_error.rb
imap-backup-14.3.0 lib/imap/backup/retry_on_error.rb
imap-backup-14.2.0 lib/imap/backup/retry_on_error.rb