Module: RetryIt

Defined in:
lib/retry_it.rb,
lib/retry_it/version.rb

Constant Summary collapse

MAX_RUNS =
10
DEFAULT_TIMEOUT_S =

seconds

10
DEFAULT_EXCEPTIONS =
[]
VERSION =
"0.1.0"

Instance Method Summary collapse

Instance Method Details

#retry_it(max_runs: MAX_RUNS, errors: DEFAULT_EXCEPTIONS, timeout: DEFAULT_TIMEOUT_S, should_retry_proc: nil, logger: nil) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/retry_it.rb', line 8

def retry_it(max_runs: MAX_RUNS,
             errors: DEFAULT_EXCEPTIONS,
             timeout: DEFAULT_TIMEOUT_S,
             should_retry_proc: nil,
             logger: nil)
  retries = 0
  begin
    yield
  rescue *errors => e
    retries += 1
    if retries < max_runs && (!should_retry_proc.is_a?(Proc) || should_retry_proc.call(e))
      if logger
        logger.info "Error (#{e.class}), retrying ##{retries} of #{max_runs}. Sleeping for #{timeout}"
      end
      if timeout > 0
        sleep timeout
      end
      retry
    else
      raise
    end
  end
end