module Spruz::Attempt
Public Instance Methods
attempt(attempts = 1, exception_class = StandardError, sleep_duration = nil, &block)
click to toggle source
# File lib/spruz/attempt.rb, line 3 def attempt(attempts = 1, exception_class = StandardError, sleep_duration = nil, &block) return if attempts <= 0 count = 0 if exception_class.nil? begin count += 1 if block.call(count) return true elsif sleep_duration and count < attempts sleep sleep_duration end end until count == attempts false else begin count += 1 block.call(count) true rescue exception_class if count < attempts sleep_duration and sleep sleep_duration retry end false end end end