lib/retriable.rb in retriable-2.0.0.beta1 vs lib/retriable.rb in retriable-2.0.0.beta2
- old
+ new
@@ -25,12 +25,13 @@
&block)
raise LocalJumpError unless block_given?
attempt = 0
- start_time = Time.now
interval = base_interval
+ start_time = Time.now
+ elapsed_time = lambda { Time.now - start_time }
begin
attempt += 1
if timeout
Timeout::timeout(timeout) { return block.call(attempt) }
@@ -38,14 +39,14 @@
return block.call(attempt)
end
rescue *[*on] => exception
raise if attempt >= max_tries
- return if (Time.now - start_time) > max_elapsed_time
-
interval = randomized_interval(rand_factor, interval)
on_retry.call(exception, attempt, Time.now - start_time, interval) if on_retry
+
+ raise if elapsed_time.call > max_elapsed_time || (elapsed_time.call + interval) > max_elapsed_time
sleep interval if interval > 0 && config.sleep_disabled != true
interval = if interval >= (max_interval / multiplier)
max_interval