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 |