class Retryer::Retry

Attributes

interval[RW]
max_retries[RW]

Public Class Methods

new(max_retries: 5, interval: 1, verbose: true) click to toggle source
# File lib/retryer.rb, line 7
def initialize(max_retries: 5, interval: 1, verbose: true)
  @max_retries=max_retries
  @interval=interval
  @verbose=verbose
end

Public Instance Methods

do(description: 'Operation') { || ... } click to toggle source
# File lib/retryer.rb, line 13
def do(description: 'Operation')
  retries = 0
  begin
    yield
  rescue Exception => e
    if retries < @max_retries
      sleep @interval
      retries += 1
      puts "Retrying: '#{description}' (retries #{retries}) with caught exception: #{e}" if @verbose
      retry
    end
    raise "MAX RETRIES REACHED: '#{description}' failed after retrying #{@max_retries} times."
  end
end