lib/retriable.rb in retriable-3.0.0 vs lib/retriable.rb in retriable-3.0.1
- old
+ new
@@ -2,14 +2,12 @@
require_relative "retriable/config"
require_relative "retriable/exponential_backoff"
require_relative "retriable/version"
module Retriable
- extend self
+ module_function
- attr_reader :config
-
def self.configure
yield(config)
end
def config
@@ -37,31 +35,25 @@
intervals = ExponentialBackoff.new(
tries: tries - 1,
base_interval: base_interval,
multiplier: multiplier,
max_interval: max_interval,
- rand_factor: rand_factor
+ rand_factor: rand_factor,
).intervals
end
- exception_list = on.kind_of?(Hash) ? on.keys : on
+ exception_list = on.is_a?(Hash) ? on.keys : on
tries.times do |index|
try = index + 1
begin
- if timeout
- Timeout::timeout(timeout) { return yield(try) }
- else
- return yield(try)
- end
+ return Timeout.timeout(timeout) { return yield(try) } if timeout
+ return yield(try)
rescue *[*exception_list] => exception
- if on.kind_of?(Hash)
- message_match = exception_list.select { |e| exception.is_a?(e) }.inject(false) do |match, e|
- break match if match
- match || [*on[e]].empty? || [*on[e]].any? { |pattern| exception.message =~ pattern }
+ if on.is_a?(Hash)
+ raise unless exception_list.any? do |e|
+ exception.is_a?(e) && ([*on[e]].empty? || [*on[e]].any? { |pattern| exception.message =~ pattern })
end
-
- raise unless message_match
end
interval = intervals[index]
on_retry.call(exception, try, elapsed_time.call, interval) if on_retry
raise if try >= tries || (elapsed_time.call + interval) > max_elapsed_time