module Just

Public Class Methods

retry(opts={}) { || ... } click to toggle source
# File lib/just/retry.rb, line 4
def retry(opts={})
  opts = {delay: 0.0, on: StandardError, tries: 2}.merge(opts)
  delay, tries, exception, logger = opts[:delay], opts[:tries], opts[:on], opts[:logger]
  count = 0
  begin
    count += 1
    yield
  rescue exception => e
    if count < tries
      if logger
        logger.error "retry #{count} of #{tries - 1} on #{e.message}"
        logger.debug "rescued: #{e.class} - #{e.backtrace.first}"
      end
      if delay > 0.0
        sleep delay
      end
      retry
    else
      raise e
    end
  end
end

Private Instance Methods

retry(opts={}) { || ... } click to toggle source
# File lib/just/retry.rb, line 4
def retry(opts={})
  opts = {delay: 0.0, on: StandardError, tries: 2}.merge(opts)
  delay, tries, exception, logger = opts[:delay], opts[:tries], opts[:on], opts[:logger]
  count = 0
  begin
    count += 1
    yield
  rescue exception => e
    if count < tries
      if logger
        logger.error "retry #{count} of #{tries - 1} on #{e.message}"
        logger.debug "rescued: #{e.class} - #{e.backtrace.first}"
      end
      if delay > 0.0
        sleep delay
      end
      retry
    else
      raise e
    end
  end
end