lib/retriable/retriable.rb in retriable-1.3.1 vs lib/retriable/retriable.rb in retriable-1.3.2
- old
+ new
@@ -1,10 +1,12 @@
-# encoding: utf-8
+ # encoding: utf-8
require 'timeout'
module Retriable
+ extend self
+
class Retry
attr_accessor :tries
attr_accessor :interval
attr_accessor :timeout
attr_accessor :on
@@ -12,11 +14,11 @@
def initialize
@tries = 3
@interval = 0
@timeout = nil
- @on = Exception
+ @on = [StandardError, Timeout::Error]
@on_retry = nil
yield self if block_given?
end
@@ -40,24 +42,16 @@
end
end
end
end
- def retriable(options = {}, &block)
- opts = {
- :tries => 3,
- :on => Exception,
- :interval => 1
- }
+ def retriable(opts = {}, &block)
+ raise 'no block given' unless block_given?
- opts.merge!(options)
-
- raise 'No block given' unless block_given?
-
Retry.new do |r|
- r.tries = opts[:tries]
- r.on = opts[:on]
- r.interval = opts[:interval]
+ r.tries = opts[:tries] if opts[:tries]
+ r.on = opts[:on] if opts[:on]
+ r.interval = opts[:interval] if opts[:interval]
r.timeout = opts[:timeout] if opts[:timeout]
r.on_retry = opts[:on_retry] if opts[:on_retry]
end.perform(&block)
end
end