# File lib/attempt.rb, line 77 def attempt count = 1 begin if @timeout SafeTimeout.timeout(@timeout){ yield } else yield end rescue @level => error @tries -= 1 if @tries > 0 msg = "Error on attempt # #{count}: #{error}; retrying" count += 1 warn Warning, msg if @warnings if @log # Accept an IO or Logger object @log.respond_to?(:puts) ? @log.puts(msg) : @log.warn(msg) end @interval += @increment if @increment sleep @interval retry end raise end end