retriable 2.0.0.beta2 → 2.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b252298dcbaede9a87149f78cec0c067742b1167
4
- data.tar.gz: b58875b898c832a5bd8ae3fd20d2eb62f80c7f84
3
+ metadata.gz: e3b8d447babc7584997f6e2756375d2d48d3b4dc
4
+ data.tar.gz: 3c14a6becbd1708ee8dc4f2cb83c10fb74489141
5
5
  SHA512:
6
- metadata.gz: e216f86b87a3526982647c8a2c6d8733eb7c9e3f4e7a262f3f38ead6d36bd4bd3c494ef22409cdf06e195de23360eb6d5f12cfa1c4c0de2492c03c49f17fe005
7
- data.tar.gz: 43505f1550318db78adcb85dd1c023280ca9b7be802ec3a331e56ae094648a9fcfd2b5879bfc90ddf840e13a3ce29e96c28e7a33cb5e12abaddf89f9a32f82c7
6
+ metadata.gz: f04b74b90611da941a4bf425ef06383aa9140043d8b32bebec64fab29d2445db0819be5c1a40e135dee0ff0289c5c56a7061793fd46b1a307bcfc6ade287e5d7
7
+ data.tar.gz: 18282a856bb96a2dd2b32a564ab2093c3620c09a38f95fdc58054084e4410626ecf18daf2a8f275a81d7893d02b0cac06e0a3cba8f818d90c3388866ff62dbc6
data/CHANGELOG.md CHANGED
@@ -1,12 +1,17 @@
1
+ ## 2.0.0.beta3
2
+ * Accept `intervals` array argument to provide your own custom intervals.
3
+ * Refactor the exponential backoff code into it's own class.
4
+ * Add specs for exponential backoff, randomization, and config.
5
+
1
6
  ## 2.0.0.beta2
2
- * Raise not return on max elapsed time, also check for elapsed time after next interval is calculated and it goes over the max elapsed time
3
- * Add specs for max_elapsed_time and max_interval
7
+ * Raise not return on max elapsed time, also check for elapsed time after next interval is calculated and it goes over the max elapsed time.
8
+ * Add specs for `max_elapsed_time` and `max_interval`.
4
9
 
5
10
  ## 2.0.0.beta1
6
11
  * Require ruby 2.0+.
7
12
  * Default to random exponential backoff, removes the `interval` option. Exponential backoff is configurable via arguments.
8
13
  * Allow configurable defaults via `#configure`.
9
- * Change `Retriable.retriable` to `Retriable.retry`
14
+ * Change `Retriable.retriable` to `Retriable.retry`.
10
15
  * Support `max_elapsed_time` termination.
11
16
 
12
17
  ## 1.4.1
data/README.md CHANGED
@@ -10,6 +10,8 @@ Ruby 2.0+
10
10
 
11
11
  If you need 1.9.x support, use the [1.x branch](https://github.com/kamui/retriable/tree/1.x).
12
12
 
13
+ WARNING: 2.x isn't API compatible with 1.x.
14
+
13
15
  ## Installation
14
16
 
15
17
  via command line:
@@ -80,6 +82,8 @@ randomized_interval = retry_interval * (random value in range [1 - randomization
80
82
 
81
83
  `max_elapsed_time` (default: 900 (15 min)) - The maximum amount of total time that code is allowed to keep being retried
82
84
 
85
+ `intervals` (default: nil) - Skip generated intervals and provide your own array of intervals in seconds. Setting this option will ignore `max_tries`, `base_interval`, `max_interval`, `rand_factor`, and `multiplier` values.
86
+
83
87
  `timeout` (default: 0) - Number of seconds to allow the code block to run before raising a Timeout::Error
84
88
 
85
89
  `on` (default: [StandardError]) - An array of exceptions to rescue for each attempt, also accepts a single Exception type
@@ -131,6 +135,16 @@ Retriable.retry base_interval: (200/1000.0), timeout: (500/1000.0) do
131
135
  end
132
136
  ```
133
137
 
138
+ ### Custom Interval Array
139
+
140
+ You can also bypass the built-in interval generation and provide your own array of intervals. Supplying your own intervals overrides the `max_tries`, `base_interval`, `max_interval`, `rand_factor`, and `multiplier` parameters.
141
+
142
+ ```ruby
143
+ Retriable.retry intervals: [0.5, 1.0, 2.0, 2.5] do
144
+ # code here...
145
+ end
146
+ ```
147
+
134
148
  ### Turn off Exponential Backoff
135
149
 
136
150
  Exponential backoff is enabled by default, if you want to simply execute code every second, you can do this:
data/Rakefile CHANGED
@@ -1,16 +1,16 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'bundler'
3
+ require "bundler"
4
4
  Bundler::GemHelper.install_tasks
5
5
 
6
- require 'rake/testtask'
6
+ require "rake/testtask"
7
7
  task default: :test
8
8
 
9
9
  desc "Run tests"
10
10
  task :test do
11
11
  Rake::TestTask.new do |t|
12
- t.libs << 'lib' << 'spec'
13
- t.pattern = 'spec/**/*_spec.rb'
12
+ t.libs << "lib" << "spec"
13
+ t.pattern = "spec/**/*_spec.rb"
14
14
  t.verbose = true
15
15
  end
16
16
  end
data/lib/retriable.rb CHANGED
@@ -1,17 +1,21 @@
1
- require 'timeout'
2
- require 'retriable/config'
3
- require 'retriable/version'
1
+ require "timeout"
2
+ require "retriable/config"
3
+ require "retriable/exponential_backoff"
4
+ require "retriable/version"
4
5
 
5
6
  module Retriable
6
7
  extend self
7
8
 
8
- attr_accessor :config
9
+ attr_reader :config
9
10
 
10
11
  def self.configure
11
- self.config ||= Config.new
12
12
  yield(config)
13
13
  end
14
14
 
15
+ def config
16
+ @config ||= Config.new
17
+ end
18
+
15
19
  def retry(
16
20
  max_tries: config.max_tries,
17
21
  base_interval: config.base_interval,
@@ -19,52 +23,39 @@ module Retriable
19
23
  rand_factor: config.rand_factor,
20
24
  multiplier: config.multiplier,
21
25
  max_elapsed_time: config.max_elapsed_time,
26
+ intervals: config.intervals,
22
27
  timeout: config.timeout,
23
28
  on: config.on,
24
29
  on_retry: config.on_retry,
25
- &block)
30
+ &block
31
+ )
26
32
 
27
33
  raise LocalJumpError unless block_given?
28
34
 
29
- attempt = 0
30
- interval = base_interval
31
35
  start_time = Time.now
32
- elapsed_time = lambda { Time.now - start_time }
33
-
34
- begin
35
- attempt += 1
36
- if timeout
37
- Timeout::timeout(timeout) { return block.call(attempt) }
38
- else
39
- return block.call(attempt)
40
- end
41
- rescue *[*on] => exception
42
- raise if attempt >= max_tries
43
-
44
- interval = randomized_interval(rand_factor, interval)
45
-
46
- on_retry.call(exception, attempt, Time.now - start_time, interval) if on_retry
47
-
48
- raise if elapsed_time.call > max_elapsed_time || (elapsed_time.call + interval) > max_elapsed_time
49
-
50
- sleep interval if interval > 0 && config.sleep_disabled != true
51
-
52
- interval = if interval >= (max_interval / multiplier)
53
- max_interval
54
- else
55
- interval * multiplier
36
+ elapsed_time = -> { Time.now - start_time }
37
+
38
+ max_tries = intervals.size if intervals
39
+ intervals ||= ExponentialBackoff.new(
40
+ max_tries: max_tries,
41
+ base_interval: base_interval,
42
+ multiplier: multiplier,
43
+ max_interval: max_interval,
44
+ rand_factor: rand_factor
45
+ ).intervals
46
+
47
+ intervals.each.with_index(1) do |interval, attempt|
48
+ begin
49
+ if timeout
50
+ Timeout::timeout(timeout) { return block.call(attempt) }
51
+ else
52
+ return block.call(attempt)
53
+ end
54
+ rescue *[*on] => exception
55
+ on_retry.call(exception, attempt, Time.now - start_time, interval) if on_retry
56
+ raise if attempt >= max_tries || (elapsed_time.call + interval) > max_elapsed_time
57
+ sleep interval if interval > 0 && config.sleep_disabled != true
56
58
  end
57
-
58
- retry
59
59
  end
60
60
  end
61
-
62
- private
63
- def randomized_interval(rand_factor, interval)
64
- return interval if rand_factor == 0
65
- delta = rand_factor * interval * 1.0
66
- min_interval = interval - delta
67
- max_interval = interval + delta
68
- rand(min_interval..max_interval)
69
- end
70
61
  end
@@ -7,6 +7,7 @@ module Retriable
7
7
  attr_accessor :rand_factor
8
8
  attr_accessor :multiplier
9
9
  attr_accessor :max_elapsed_time
10
+ attr_accessor :intervals
10
11
  attr_accessor :timeout
11
12
  attr_accessor :on
12
13
  attr_accessor :on_retry
@@ -19,6 +20,7 @@ module Retriable
19
20
  @rand_factor = 0.5
20
21
  @multiplier = 1.5
21
22
  @max_elapsed_time = 900 # 15 minn
23
+ @intervals = nil
22
24
  @timeout = nil
23
25
  @on = [StandardError]
24
26
  @on_retry = nil
@@ -1,4 +1,4 @@
1
- require 'retriable'
1
+ require "retriable"
2
2
 
3
3
  module Kernel
4
4
  def retriable(opts={}, &block)
@@ -0,0 +1,39 @@
1
+ module Retriable
2
+ class ExponentialBackoff
3
+ attr_accessor :max_tries, :base_interval, :multiplier, :max_interval, :rand_factor
4
+
5
+ def initialize(
6
+ max_tries: Retriable.config.max_tries,
7
+ base_interval: Retriable.config.base_interval,
8
+ multiplier: Retriable.config.multiplier,
9
+ max_interval: Retriable.config.max_interval,
10
+ rand_factor: Retriable.config.rand_factor
11
+ )
12
+
13
+ @max_tries = max_tries
14
+ @base_interval = base_interval
15
+ @multiplier = multiplier
16
+ @max_interval = max_interval
17
+ @rand_factor = rand_factor
18
+ end
19
+
20
+ def intervals
21
+ intervals = Array.new(max_tries) do |iteration|
22
+ [base_interval * multiplier ** iteration, max_interval].min
23
+ end
24
+
25
+ return intervals if rand_factor == 0
26
+
27
+ intervals.map { |i| randomize(i) }
28
+ end
29
+
30
+ protected
31
+ def randomize(interval)
32
+ return interval if rand_factor == 0
33
+ delta = rand_factor * interval * 1.0
34
+ min_interval = interval - delta
35
+ max_interval = interval + delta
36
+ rand(min_interval..max_interval)
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module Retriable
2
- VERSION = '2.0.0.beta2'
2
+ VERSION = "2.0.0.beta3"
3
3
  end
data/retriable.gemspec CHANGED
@@ -1,5 +1,5 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
2
+ lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require "retriable/version"
5
5
 
@@ -22,10 +22,10 @@ Gem::Specification.new do |s|
22
22
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
23
  s.require_paths = ["lib"]
24
24
 
25
- s.add_development_dependency 'rake'
26
- s.add_development_dependency 'minitest', '>= 5.0'
27
- s.add_development_dependency 'minitest-focus'
28
- s.add_development_dependency 'pry'
29
- s.add_development_dependency 'guard'
30
- s.add_development_dependency 'guard-minitest'
25
+ s.add_development_dependency "rake"
26
+ s.add_development_dependency "minitest", ">= 5.0"
27
+ s.add_development_dependency "minitest-focus"
28
+ s.add_development_dependency "pry"
29
+ s.add_development_dependency "guard"
30
+ s.add_development_dependency "guard-minitest"
31
31
  end
@@ -0,0 +1,47 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe Retriable::Config do
4
+ subject do
5
+ Retriable::Config
6
+ end
7
+
8
+ it "sleep defaults to enabled" do
9
+ subject.new.sleep_disabled.must_equal false
10
+ end
11
+
12
+ it "max tries defaults to 3" do
13
+ subject.new.max_tries.must_equal 3
14
+ end
15
+
16
+ it "max interval defaults to 60" do
17
+ subject.new.max_interval.must_equal 60
18
+ end
19
+
20
+ it "randomization factor defaults to 0.5" do
21
+ subject.new.base_interval.must_equal 0.5
22
+ end
23
+
24
+ it "multiplier defaults to 1.5" do
25
+ subject.new.multiplier.must_equal 1.5
26
+ end
27
+
28
+ it "max elapsed time defaults to 900" do
29
+ subject.new.max_elapsed_time.must_equal 900
30
+ end
31
+
32
+ it "intervals defaults to nil" do
33
+ subject.new.intervals.must_be_nil
34
+ end
35
+
36
+ it "timeout defaults to nil" do
37
+ subject.new.timeout.must_be_nil
38
+ end
39
+
40
+ it "on defaults to [StandardError]" do
41
+ subject.new.on.must_equal [StandardError]
42
+ end
43
+
44
+ it "on retry handler defaults to nil" do
45
+ subject.new.on_retry.must_be_nil
46
+ end
47
+ end
@@ -0,0 +1,49 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe Retriable::ExponentialBackoff do
4
+ subject do
5
+ Retriable::ExponentialBackoff
6
+ end
7
+
8
+ it "max tries defaults to 3" do
9
+ subject.new.max_tries.must_equal 3
10
+ end
11
+
12
+ it "max interval defaults to 60" do
13
+ subject.new.max_interval.must_equal 60
14
+ end
15
+
16
+ it "randomization factor defaults to 0.5" do
17
+ subject.new.base_interval.must_equal 0.5
18
+ end
19
+
20
+ it "multiplier defaults to 1.5" do
21
+ subject.new.multiplier.must_equal 1.5
22
+ end
23
+
24
+ it "generates randomized intervals" do
25
+ i = subject.new(max_tries: 9).intervals
26
+ i[0].between?(0.25, 0.75).must_equal true
27
+ i[1].between?(0.375, 1.125).must_equal true
28
+ i[2].between?(0.562, 1.687).must_equal true
29
+ i[3].between?(0.8435, 2.53).must_equal true
30
+ i[4].between?(1.265, 3.795).must_equal true
31
+ i[5].between?(1.897, 5.692).must_equal true
32
+ i[6].between?(2.846, 8.538).must_equal true
33
+ i[7].between?(4.269, 12.807).must_equal true
34
+ i[8].between?(6.403, 19.210).must_equal true
35
+ end
36
+
37
+ it "generates 5 non-randomized intervals" do
38
+ subject.new(
39
+ max_tries: 5,
40
+ rand_factor: 0.0
41
+ ).intervals.must_equal([
42
+ 0.5,
43
+ 0.75,
44
+ 1.125,
45
+ 1.6875,
46
+ 2.53125
47
+ ])
48
+ end
49
+ end
@@ -1,4 +1,4 @@
1
- require_relative 'spec_helper'
1
+ require_relative "spec_helper"
2
2
 
3
3
  class TestError < Exception; end
4
4
 
@@ -7,20 +7,29 @@ describe Retriable do
7
7
  Retriable
8
8
  end
9
9
 
10
- describe 'with sleep disabled' do
10
+ describe "with sleep disabled" do
11
11
  before do
12
12
  Retriable.configure do |c|
13
13
  c.sleep_disabled = true
14
14
  end
15
15
  end
16
16
 
17
- it 'raises a LocalJumpError if retry is not given a block' do
18
- lambda do
17
+ it "stops at first attempt if the block does not raise an exception" do
18
+ attempts = 0
19
+ subject.retry do
20
+ attempts += 1
21
+ end
22
+
23
+ attempts.must_equal 1
24
+ end
25
+
26
+ it "raises a LocalJumpError if retry is not given a block" do
27
+ -> do
19
28
  subject.retry on: EOFError
20
29
  end.must_raise LocalJumpError
21
30
  end
22
31
 
23
- describe 'retry block of code raising EOFError with no arguments' do
32
+ describe "retry block of code raising EOFError with no arguments" do
24
33
  before do
25
34
  @attempts = 0
26
35
 
@@ -30,20 +39,20 @@ describe Retriable do
30
39
  end
31
40
  end
32
41
 
33
- it 'uses exponential backoff' do
42
+ it "uses exponential backoff" do
34
43
  @attempts.must_equal 3
35
44
  end
36
45
  end
37
46
 
38
- it 'retry on custom exception and re-raises the exception' do
39
- lambda do
47
+ it "retry on custom exception and re-raises the exception" do
48
+ -> do
40
49
  subject.retry on: TestError do
41
50
  raise TestError.new
42
51
  end
43
52
  end.must_raise TestError
44
53
  end
45
54
 
46
- it 'retry with 10 max tries' do
55
+ it "retry with 10 max tries" do
47
56
  attempts = 0
48
57
 
49
58
  subject.retry(
@@ -56,21 +65,53 @@ describe Retriable do
56
65
  attempts.must_equal 10
57
66
  end
58
67
 
59
- it 'retry will timeout after 1 second' do
60
- lambda do
68
+ it "retry will timeout after 1 second" do
69
+ -> do
61
70
  subject.retry timeout: 1 do
62
71
  sleep 2
63
72
  end
64
73
  end.must_raise Timeout::Error
65
74
  end
66
75
 
67
- describe 'retries with an on_retry handler, 6 max retries, and a 0.0 rand_factor' do
76
+ it "applies a randomized exponential backoff to each attempt" do
77
+ @attempts = 0
78
+ @time_table = {}
79
+
80
+ handler = ->(exception, attempt, elapsed_time, next_interval) do
81
+ exception.class.must_equal ArgumentError
82
+ @time_table[attempt] = next_interval
83
+ end
84
+
85
+ -> do
86
+ Retriable.retry(
87
+ on: [EOFError, ArgumentError],
88
+ on_retry: handler,
89
+ rand_factor: 0.0,
90
+ max_tries: 9
91
+ ) do
92
+ @attempts += 1
93
+ raise ArgumentError.new
94
+ end
95
+ end.must_raise ArgumentError
96
+
97
+ @time_table[1].between?(0.25, 0.75).must_equal true
98
+ @time_table[2].between?(0.375, 1.125).must_equal true
99
+ @time_table[3].between?(0.562, 1.687).must_equal true
100
+ @time_table[4].between?(0.8435, 2.53).must_equal true
101
+ @time_table[5].between?(1.265, 3.795).must_equal true
102
+ @time_table[6].between?(1.897, 5.692).must_equal true
103
+ @time_table[7].between?(2.846, 8.538).must_equal true
104
+ @time_table[8].between?(4.269, 12.807).must_equal true
105
+ @time_table[9].between?(6.403, 19.210).must_equal true
106
+ end
107
+
108
+ describe "retries with an on_retry handler, 6 max retries, and a 0.0 rand_factor" do
68
109
  before do
69
110
  max_tries = 6
70
111
  @attempts = 0
71
112
  @time_table = {}
72
113
 
73
- handler = Proc.new do |exception, attempt, elapsed_time, next_interval|
114
+ handler = ->(exception, attempt, elapsed_time, next_interval) do
74
115
  exception.class.must_equal ArgumentError
75
116
  @time_table[attempt] = next_interval
76
117
  end
@@ -86,11 +127,11 @@ describe Retriable do
86
127
  end
87
128
  end
88
129
 
89
- it 'makes 6 attempts' do
130
+ it "makes 6 attempts" do
90
131
  @attempts.must_equal 6
91
132
  end
92
133
 
93
- it 'applies a non-randomized exponential backoff to each attempt' do
134
+ it "applies a non-randomized exponential backoff to each attempt" do
94
135
  @time_table.must_equal({
95
136
  1 => 0.5,
96
137
  2 => 0.75,
@@ -101,12 +142,12 @@ describe Retriable do
101
142
  end
102
143
  end
103
144
 
104
- it 'retry has a max interval of 1.5 seconds' do
145
+ it "retry has a max interval of 1.5 seconds" do
105
146
  max_tries = 6
106
147
  attempts = 0
107
148
  time_table = {}
108
149
 
109
- handler = Proc.new do |exception, attempt, elapsed_time, next_interval|
150
+ handler = ->(exception, attempt, elapsed_time, next_interval) do
110
151
  time_table[attempt] = next_interval
111
152
  end
112
153
 
@@ -130,14 +171,47 @@ describe Retriable do
130
171
  })
131
172
  end
132
173
 
133
- it 'can call #retriable in the global' do
134
- lambda do
174
+ it "retries with defined intervals" do
175
+ intervals = [
176
+ 0.5,
177
+ 0.75,
178
+ 1.125,
179
+ 1.5,
180
+ 1.5
181
+ ]
182
+ time_table = {}
183
+
184
+ handler = ->(exception, attempt, elapsed_time, next_interval) do
185
+ time_table[attempt] = next_interval
186
+ end
187
+
188
+ -> do
189
+ subject.retry(
190
+ on: EOFError,
191
+ on_retry: handler,
192
+ intervals: intervals
193
+ ) do
194
+ raise EOFError.new
195
+ end
196
+ end.must_raise EOFError
197
+
198
+ time_table.must_equal({
199
+ 1 => 0.5,
200
+ 2 => 0.75,
201
+ 3 => 1.125,
202
+ 4 => 1.5,
203
+ 5 => 1.5
204
+ })
205
+ end
206
+
207
+ it "can call #retriable in the global" do
208
+ -> do
135
209
  retriable do
136
- puts 'should raise NoMethodError'
210
+ puts "should raise NoMethodError"
137
211
  end
138
212
  end.must_raise NoMethodError
139
213
 
140
- require_relative '../lib/retriable/core_ext/kernel'
214
+ require_relative "../lib/retriable/core_ext/kernel"
141
215
 
142
216
  i = 0
143
217
  retriable do
@@ -148,7 +222,7 @@ describe Retriable do
148
222
  end
149
223
  end
150
224
 
151
- it 'retry runs for a max elapsed time of 2 seconds' do
225
+ it "retry runs for a max elapsed time of 2 seconds" do
152
226
  subject.configure do |c|
153
227
  c.sleep_disabled = false
154
228
  end
@@ -158,11 +232,11 @@ describe Retriable do
158
232
  attempts = 0
159
233
  time_table = {}
160
234
 
161
- handler = Proc.new do |exception, attempt, elapsed_time, next_interval|
235
+ handler = ->(exception, attempt, elapsed_time, next_interval) do
162
236
  time_table[attempt] = elapsed_time
163
237
  end
164
238
 
165
- lambda do
239
+ -> do
166
240
  subject.retry(
167
241
  base_interval: 1.0,
168
242
  multiplier: 1.0,
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'minitest/autorun'
2
- require 'minitest/focus'
3
- require 'pry'
1
+ require "minitest/autorun"
2
+ require "minitest/focus"
3
+ require "pry"
4
4
 
5
- require_relative '../lib/retriable'
5
+ require_relative "../lib/retriable"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: retriable
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta2
4
+ version: 2.0.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Chu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-25 00:00:00.000000000 Z
11
+ date: 2014-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -113,8 +113,11 @@ files:
113
113
  - lib/retriable.rb
114
114
  - lib/retriable/config.rb
115
115
  - lib/retriable/core_ext/kernel.rb
116
+ - lib/retriable/exponential_backoff.rb
116
117
  - lib/retriable/version.rb
117
118
  - retriable.gemspec
119
+ - spec/config_spec.rb
120
+ - spec/exponential_backoff_spec.rb
118
121
  - spec/retriable_spec.rb
119
122
  - spec/spec_helper.rb
120
123
  - wercker.yml
@@ -144,5 +147,7 @@ specification_version: 4
144
147
  summary: Retriable is an simple DSL to retry failed code blocks with randomized exponential
145
148
  backoff
146
149
  test_files:
150
+ - spec/config_spec.rb
151
+ - spec/exponential_backoff_spec.rb
147
152
  - spec/retriable_spec.rb
148
153
  - spec/spec_helper.rb