class Greenjaguar::Retrier

Public Class Methods

new(policy, &block) click to toggle source
# File lib/greenjaguar/retrier.rb, line 4
def initialize(policy, &block)
  @policy = policy
  @retry_block = block
  exec
end

Private Instance Methods

decrement_retry_count() click to toggle source
# File lib/greenjaguar/retrier.rb, line 36
def decrement_retry_count
  @policy.count -= 1
end
exec() click to toggle source
# File lib/greenjaguar/retrier.rb, line 11
def exec
  @start_time = Time.new
  begin
    @retry_block.call
  rescue => e
    raise unless @policy.valid_exception? e
    if @policy.never_give_up?
      @policy.wait
      retry
    else
      if time_out? || retry_count_reached?
        raise unless @policy.fail_silently?
      else
        decrement_retry_count
        @policy.wait
        retry
      end
    end
  end
end
retry_count_reached?() click to toggle source
# File lib/greenjaguar/retrier.rb, line 40
def retry_count_reached?
  @policy.count == 0
end
time_out?() click to toggle source
# File lib/greenjaguar/retrier.rb, line 32
def time_out?
  Time.now - @start_time > @policy.timeout
end