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