class Retryer::Wait

Attributes

interval[RW]
timeout[RW]

Public Class Methods

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

Public Instance Methods

until(description: 'Operation') { || ... } click to toggle source
# File lib/retryer.rb, line 38
def until(description: 'Operation')
  begin
    Timeout::timeout(@timeout) do
      retries = 0
      begin
        raise "Condition not met" unless yield
      rescue Exception => e
        sleep @interval
        retries += 1
        puts "Retrying during wait (retries #{retries}) '#{description}' with caught exception: #{e}" if @verbose
        retry
      end
    end

  rescue Exception => e
    raise "TIMEOUT: '#{description}' after waiting #{@timeout} seconds."
  end
end