take2 0.1.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/Gemfile.lock +3 -3
- data/README.md +29 -38
- data/lib/take2.rb +11 -22
- data/lib/take2/configuration.rb +15 -34
- data/lib/take2/version.rb +1 -1
- data/spec/take2/configuration_spec.rb +11 -29
- data/spec/take2_spec.rb +5 -21
- data/take2.gemspec +1 -1
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cb318b781932656dc817f9129c5621b55b99dc377968ffb0931f6ba3c044ab5
|
4
|
+
data.tar.gz: 28e00524af5f1ba059445018d47bffb0216b7517949d4ad8ed61da951db3be6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9c3335fd97336deb6e7f1b0e82cf040779dbec24bb81b20b1b8bff5422e3c3612abdc49eb5c8b09e609d3e8a17941c64fdb5c4dfd417d7ebb7cec4a3a9d4ca4
|
7
|
+
data.tar.gz: 03aea65024971befd1c0e1db2e8d2a1dae3d9bf8ad82f87017d8c75b0461246cc5e366ef33e90dae1f4201b97b673e1acdbec8212ead4d64428104e3b6d72cf4
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
take2 (0.
|
4
|
+
take2 (1.0.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
@@ -22,7 +22,7 @@ GEM
|
|
22
22
|
pry-nav (0.2.4)
|
23
23
|
pry (>= 0.9.10, < 0.11.0)
|
24
24
|
rainbow (3.0.0)
|
25
|
-
rake (
|
25
|
+
rake (13.0.1)
|
26
26
|
rspec (3.8.0)
|
27
27
|
rspec-core (~> 3.8.0)
|
28
28
|
rspec-expectations (~> 3.8.0)
|
@@ -60,4 +60,4 @@ DEPENDENCIES
|
|
60
60
|
take2!
|
61
61
|
|
62
62
|
BUNDLED WITH
|
63
|
-
1.
|
63
|
+
1.17.3
|
data/README.md
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
![Gem](https://img.shields.io/gem/dt/take2.svg)
|
4
4
|
![GitHub last commit](https://img.shields.io/github/last-commit/restaurant-cheetah/take2.svg)
|
5
5
|
![Gem](https://img.shields.io/gem/v/take2.svg)
|
6
|
-
Define rules for retrying behavior.
|
7
|
-
Yield block of code into the
|
8
|
-
Things getting take two :)
|
6
|
+
1. Define rules for retrying behavior.
|
7
|
+
2. Yield block of code into the with_retry method.
|
8
|
+
3. Things getting take two :)
|
9
9
|
|
10
10
|
## Install
|
11
11
|
|
@@ -15,64 +15,57 @@ gem install take2
|
|
15
15
|
## Examples
|
16
16
|
|
17
17
|
```ruby
|
18
|
-
class
|
18
|
+
class Service
|
19
19
|
include Take2
|
20
20
|
|
21
|
-
|
22
21
|
number_of_retries 3
|
23
|
-
|
22
|
+
|
24
23
|
# Could be configured globally or on class level.
|
25
|
-
retriable_errors Net::HTTPRetriableError,
|
24
|
+
retriable_errors Net::HTTPRetriableError, Errno::ECONNRESET
|
26
25
|
|
27
26
|
# Retry unless the response status is 5xx. The implementation is dependent of the http lib in use.
|
28
27
|
retriable_condition proc { |error| error.response.code < 500 }
|
29
28
|
|
30
29
|
# Defines callable code to run before next retry. Could be an out put to some logger.
|
31
|
-
on_retry proc { |error, tries| puts "#{
|
32
|
-
|
33
|
-
# The available strategies are:
|
30
|
+
on_retry proc { |error, tries| puts "#{name} - Retrying.. #{tries} of #{retriable_configuration[:retries]} (#{error})" }
|
31
|
+
|
32
|
+
# The available strategies are:
|
34
33
|
# type :constant, start: 2 => [2, 2, 2, 2 ... ]
|
35
34
|
# type :linear, start: 3, factor: 2 => [3, 6, 12, 24 ... ]
|
36
35
|
# type :fibonacci, start: 2 => [2, 3, 5, 8, 13 ... ]
|
37
|
-
# type :exponential, start: 3 => [3, 7, 12, 28, 47 ... ]
|
36
|
+
# type :exponential, start: 3 => [3, 7, 12, 28, 47 ... ]
|
38
37
|
backoff_strategy type: :fibonacci, start: 3
|
39
38
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
class << self
|
40
|
+
def call
|
41
|
+
with_retry do
|
42
|
+
# Some logic that might raise..
|
43
|
+
# If it will raise retriable, magic happens.
|
44
|
+
# If not the original error re raised
|
45
45
|
|
46
|
-
|
46
|
+
raise Net::HTTPRetriableError.new('Release the Kraken...many times!!', nil)
|
47
|
+
end
|
47
48
|
end
|
48
|
-
end
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
# Pass custom options per method call
|
51
|
+
# The class defaults will not be overwritten
|
52
|
+
def read(file)
|
53
|
+
with_retry(retries: 2, retriable: [IOError], retry_proc: proc {}, retry_condition_proc: proc {}) do
|
54
|
+
# Some logic that might raise..
|
55
|
+
end
|
55
56
|
end
|
56
57
|
end
|
57
|
-
|
58
58
|
end
|
59
59
|
|
60
|
-
|
60
|
+
Service.call
|
61
61
|
#=> KratosService - Retrying.. 3 of 3 (Release the Kraken...many times!!)
|
62
62
|
#=> KratosService - Retrying.. 2 of 3 (Release the Kraken...many times!!)
|
63
63
|
#=> KratosService - Retrying.. 1 of 3 (Release the Kraken...many times!!)
|
64
64
|
# After the retrying is done, original error re-raised
|
65
65
|
#=> Net::HTTPRetriableError: Release the Kraken...many times!!
|
66
66
|
|
67
|
-
# Not wrapping with method
|
68
|
-
KratosService.new.call_api_with_retry { 1 / 0 }
|
69
|
-
|
70
|
-
# Or..
|
71
|
-
Class.new { include Take2 }.new.call_api_with_retry { 1 / 0 }
|
72
|
-
|
73
|
-
|
74
67
|
# Current configuration hash
|
75
|
-
|
68
|
+
Service.retriable_configuration
|
76
69
|
|
77
70
|
```
|
78
71
|
|
@@ -84,15 +77,13 @@ KratosService.retriable_configuration
|
|
84
77
|
|
85
78
|
Take2.configure do |config|
|
86
79
|
config.retries = 3
|
87
|
-
config.retriable = [
|
88
|
-
Net::HTTPServerException,
|
80
|
+
config.retriable = [
|
89
81
|
Net::HTTPRetriableError,
|
90
82
|
Errno::ECONNRESET,
|
91
83
|
IOError
|
92
84
|
].freeze
|
93
|
-
config.retry_condition_proc = proc {false}
|
94
|
-
config.
|
95
|
-
config.retry_proc = proc {Rails.logger.info "Retry message"}
|
85
|
+
config.retry_condition_proc = proc { false }
|
86
|
+
config.retry_proc = proc { Rails.logger.info "Retry message" }
|
96
87
|
config.backoff_intervals = Take2::Backoff.new(:linear, 1).intervals
|
97
88
|
end
|
98
89
|
```
|
data/lib/take2.rb
CHANGED
@@ -23,11 +23,14 @@ module Take2
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def local_defaults(options)
|
26
|
-
configuration.
|
26
|
+
configuration.validate!(options)
|
27
27
|
end
|
28
28
|
|
29
29
|
def configure
|
30
|
-
|
30
|
+
if block_given?
|
31
|
+
yield(config)
|
32
|
+
config.validate!(config.to_hash)
|
33
|
+
end
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
@@ -48,7 +51,7 @@ module Take2
|
|
48
51
|
# backoff_strategy type: :exponential, start: 3
|
49
52
|
#
|
50
53
|
# def give_me_food
|
51
|
-
#
|
54
|
+
# with_retry do
|
52
55
|
# # Some logic that might raise..
|
53
56
|
# # If it will raise retriable, magic happens.
|
54
57
|
# # If not the original error re raised
|
@@ -107,9 +110,9 @@ module Take2
|
|
107
110
|
# retriable_errors Net::HTTPRetriableError, Errno::ECONNRESET
|
108
111
|
# end
|
109
112
|
# Arguments:
|
110
|
-
# errors: List of
|
113
|
+
# errors: List of retriable errors
|
111
114
|
def retriable_errors(*errors)
|
112
|
-
message = 'All retriable errors must be StandardError
|
115
|
+
message = 'All retriable errors must be StandardError descendants'
|
113
116
|
raise ArgumentError, message unless errors.all? { |e| e <= StandardError }
|
114
117
|
self.retriable = errors
|
115
118
|
end
|
@@ -143,15 +146,6 @@ module Take2
|
|
143
146
|
self.retry_proc = proc
|
144
147
|
end
|
145
148
|
|
146
|
-
def sleep_before_retry(seconds)
|
147
|
-
unless (seconds.is_a?(Integer) || seconds.is_a?(Float)) && seconds.positive?
|
148
|
-
raise ArgumentError, 'Must be positive numer'
|
149
|
-
end
|
150
|
-
puts "DEPRECATION MESSAGE - The sleep_before_retry method is softly deprecated in favor of backoff_stategy \r
|
151
|
-
where the time to sleep is a starting point on the backoff intervals. Please implement it instead."
|
152
|
-
self.time_to_sleep = seconds
|
153
|
-
end
|
154
|
-
|
155
149
|
# Sets the backoff strategy
|
156
150
|
#
|
157
151
|
# Example:
|
@@ -179,9 +173,8 @@ module Take2
|
|
179
173
|
attr_accessor(*Take2::Configuration::CONFIG_ATTRS)
|
180
174
|
|
181
175
|
def set_defaults
|
182
|
-
|
183
|
-
|
184
|
-
instance_variable_set("@#{attr}", config[attr])
|
176
|
+
Take2.config.to_hash.each do |k, v|
|
177
|
+
instance_variable_set("@#{k}", v)
|
185
178
|
end
|
186
179
|
end
|
187
180
|
|
@@ -191,11 +184,7 @@ module Take2
|
|
191
184
|
end
|
192
185
|
|
193
186
|
def rest(config, tries)
|
194
|
-
seconds =
|
195
|
-
config[:time_to_sleep].to_f
|
196
|
-
else
|
197
|
-
next_interval(config[:backoff_intervals], config[:retries], tries)
|
198
|
-
end
|
187
|
+
seconds = next_interval(config[:backoff_intervals], config[:retries], tries)
|
199
188
|
sleep(seconds)
|
200
189
|
end
|
201
190
|
|
data/lib/take2/configuration.rb
CHANGED
@@ -8,8 +8,6 @@ module Take2
|
|
8
8
|
:retriable,
|
9
9
|
:retry_proc,
|
10
10
|
:retry_condition_proc,
|
11
|
-
:time_to_sleep,
|
12
|
-
:backoff_setup,
|
13
11
|
:backoff_intervals].freeze
|
14
12
|
|
15
13
|
attr_accessor(*CONFIG_ATTRS)
|
@@ -17,19 +15,12 @@ module Take2
|
|
17
15
|
def initialize(options = {})
|
18
16
|
# Defaults
|
19
17
|
@retries = 3
|
20
|
-
@retriable = [
|
21
|
-
Net::HTTPServerException,
|
22
|
-
Net::HTTPRetriableError,
|
23
|
-
Errno::ECONNRESET,
|
24
|
-
IOError,
|
25
|
-
].freeze
|
18
|
+
@retriable = []
|
26
19
|
@retry_proc = proc {}
|
27
20
|
@retry_condition_proc = proc { false }
|
28
|
-
@
|
29
|
-
|
30
|
-
|
31
|
-
# Overwriting the defaults
|
32
|
-
validate_options(options, &setter)
|
21
|
+
@backoff_intervals = Backoff.new(:constant, 3).intervals
|
22
|
+
|
23
|
+
merge_options!(options)
|
33
24
|
end
|
34
25
|
|
35
26
|
def to_hash
|
@@ -42,38 +33,28 @@ module Take2
|
|
42
33
|
public_send(value)
|
43
34
|
end
|
44
35
|
|
45
|
-
def
|
36
|
+
def merge_options!(options = {})
|
37
|
+
validate!(options).each do |key, value|
|
38
|
+
public_send("#{key}=", value)
|
39
|
+
end
|
40
|
+
self
|
41
|
+
end
|
42
|
+
|
43
|
+
def validate!(options)
|
46
44
|
options.each do |k, v|
|
47
45
|
raise ArgumentError, "#{k} is not a valid configuration" unless CONFIG_ATTRS.include?(k)
|
48
46
|
case k
|
49
47
|
when :retries
|
50
48
|
raise ArgumentError, "#{k} must be positive integer" unless v.is_a?(Integer) && v.positive?
|
51
|
-
when :time_to_sleep
|
52
|
-
raise ArgumentError, "#{k} must be positive number" unless (v.is_a?(Integer) || v.is_a?(Float)) && v >= 0
|
53
49
|
when :retriable
|
54
50
|
raise ArgumentError, "#{k} must be array of retriable errors" unless v.is_a?(Array)
|
51
|
+
when :backoff_intervals
|
52
|
+
raise ArgumentError, "#{k} must be array of retriable errors" unless v.is_a?(Array)
|
53
|
+
raise ArgumentError, "#{k} size must be greater or equal to number of retries" unless v.size >= retries
|
55
54
|
when :retry_proc, :retry_condition_proc
|
56
55
|
raise ArgumentError, "#{k} must be Proc" unless v.is_a?(Proc)
|
57
|
-
when :backoff_setup
|
58
|
-
available_types = [:constant, :linear, :fibonacci, :exponential]
|
59
|
-
raise ArgumentError, 'Incorrect backoff type' unless available_types.include?(v[:type])
|
60
56
|
end
|
61
|
-
yield(k, v) if block_given?
|
62
57
|
end
|
63
58
|
end
|
64
|
-
|
65
|
-
def setter
|
66
|
-
->(key, value) {
|
67
|
-
if key == :backoff_setup
|
68
|
-
assign_backoff_intervals(value)
|
69
|
-
else
|
70
|
-
public_send("#{key}=", value)
|
71
|
-
end
|
72
|
-
}
|
73
|
-
end
|
74
|
-
|
75
|
-
def assign_backoff_intervals(backoff_setup)
|
76
|
-
@backoff_intervals = Backoff.new(backoff_setup[:type], backoff_setup[:start]).intervals
|
77
|
-
end
|
78
59
|
end
|
79
60
|
end
|
data/lib/take2/version.rb
CHANGED
@@ -11,12 +11,7 @@ RSpec.describe(Take2::Configuration) do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'has correct default retriable errors array' do
|
14
|
-
expect(default.retriable).to(eql([
|
15
|
-
Net::HTTPServerException,
|
16
|
-
Net::HTTPRetriableError,
|
17
|
-
Errno::ECONNRESET,
|
18
|
-
IOError,
|
19
|
-
].freeze))
|
14
|
+
expect(default.retriable).to(eql([]))
|
20
15
|
end
|
21
16
|
|
22
17
|
it 'has default proc for retry_proc' do
|
@@ -29,10 +24,6 @@ RSpec.describe(Take2::Configuration) do
|
|
29
24
|
expect(default.retry_condition_proc.call).to(eql(p.call))
|
30
25
|
end
|
31
26
|
|
32
|
-
it 'has correct default value for time_to_sleep' do
|
33
|
-
expect(default.time_to_sleep).to(eql(0))
|
34
|
-
end
|
35
|
-
|
36
27
|
it 'has correct default value for backoff_intervals' do
|
37
28
|
expect(default.backoff_intervals).to eql Array.new(10, 3)
|
38
29
|
end
|
@@ -46,14 +37,13 @@ RSpec.describe(Take2::Configuration) do
|
|
46
37
|
retriable: [Net::HTTPRetriableError],
|
47
38
|
retry_condition_proc: proc { true },
|
48
39
|
retry_proc: proc { 2 * 2 },
|
49
|
-
|
50
|
-
backoff_setup: { type: :linear, start: 3 }
|
40
|
+
backoff_intervals: [1, 2, 3, 4, 5]
|
51
41
|
}
|
52
42
|
end
|
53
43
|
|
54
44
|
let!(:new_configuration) { described_class.new(new_configs_hash).to_hash }
|
55
45
|
|
56
|
-
[:retries, :retriable, :retry_proc, :retry_condition_proc, :
|
46
|
+
[:retries, :retriable, :retry_proc, :retry_condition_proc, :backoff_intervals].each do |key|
|
57
47
|
it "sets the #{key} key" do
|
58
48
|
if new_configs_hash[key].respond_to?(:call)
|
59
49
|
expect(new_configuration[key].call).to(eql(new_configs_hash[key].call))
|
@@ -62,14 +52,6 @@ RSpec.describe(Take2::Configuration) do
|
|
62
52
|
end
|
63
53
|
end
|
64
54
|
end
|
65
|
-
|
66
|
-
it 'sets the backoff_intervals correctly' do
|
67
|
-
expect(new_configuration[:backoff_intervals])
|
68
|
-
.to eql(Take2::Backoff.new(
|
69
|
-
new_configs_hash[:backoff_setup][:type],
|
70
|
-
new_configs_hash[:backoff_setup][:start]
|
71
|
-
).intervals)
|
72
|
-
end
|
73
55
|
end
|
74
56
|
|
75
57
|
context 'with invalid hash' do
|
@@ -80,12 +62,6 @@ RSpec.describe(Take2::Configuration) do
|
|
80
62
|
end
|
81
63
|
end
|
82
64
|
|
83
|
-
context 'when time_to_sleep set to invalid value' do
|
84
|
-
it 'raises ArgumentError' do
|
85
|
-
expect { described_class.new(time_to_sleep: -1) }.to(raise_error(ArgumentError))
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
65
|
context 'when retriable set to invalid value' do
|
90
66
|
it 'raises ArgumentError' do
|
91
67
|
expect { described_class.new(retriable: StandardError) }.to(raise_error(ArgumentError))
|
@@ -104,9 +80,15 @@ RSpec.describe(Take2::Configuration) do
|
|
104
80
|
end
|
105
81
|
end
|
106
82
|
|
107
|
-
context 'when
|
83
|
+
context 'when backoff_intervals has incorrect type' do
|
84
|
+
it 'raises ArgumentError' do
|
85
|
+
expect { described_class.new(backoff_intervals: 1) }.to(raise_error(ArgumentError))
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'when backoff_intervals size smaller then number of retries' do
|
108
90
|
it 'raises ArgumentError' do
|
109
|
-
expect { described_class.new(
|
91
|
+
expect { described_class.new(backoff_intervals: [1]) }.to(raise_error(ArgumentError))
|
110
92
|
end
|
111
93
|
end
|
112
94
|
end
|
data/spec/take2_spec.rb
CHANGED
@@ -6,10 +6,9 @@ RSpec.describe(Take2) do
|
|
6
6
|
let!(:config) do
|
7
7
|
Take2.configure do |c|
|
8
8
|
c.retries = 1
|
9
|
-
c.retriable = [
|
9
|
+
c.retriable = [Errno::ECONNRESET, Net::HTTPRetriableError].freeze
|
10
10
|
c.retry_condition_proc = proc { false }
|
11
11
|
c.retry_proc = proc {}
|
12
|
-
c.time_to_sleep = 0
|
13
12
|
c.backoff_intervals = Take2::Backoff.new(:linear, 1).intervals
|
14
13
|
end
|
15
14
|
end
|
@@ -35,10 +34,6 @@ RSpec.describe(Take2) do
|
|
35
34
|
expect(subject[:retry_proc].call).to(eql(described_class.configuration[:retry_proc].call))
|
36
35
|
end
|
37
36
|
|
38
|
-
it 'has a default value for :time_to_sleep' do
|
39
|
-
expect(subject[:time_to_sleep]).to(eql(described_class.configuration[:time_to_sleep]))
|
40
|
-
end
|
41
|
-
|
42
37
|
it 'has a default value for :backoff_intervals' do
|
43
38
|
expect(subject[:backoff_intervals]).to eql((1..10).to_a)
|
44
39
|
end
|
@@ -111,21 +106,6 @@ RSpec.describe(Take2) do
|
|
111
106
|
end
|
112
107
|
end
|
113
108
|
|
114
|
-
describe '.sleep_before_retry' do
|
115
|
-
context 'with valid argument' do
|
116
|
-
it 'sets the :sleep_before_retry attribute' do
|
117
|
-
klass.sleep_before_retry(3.5)
|
118
|
-
expect(subject[:time_to_sleep]).to(eql(3.5))
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
context 'with invalid argument' do
|
123
|
-
it 'raises ArgumentError' do
|
124
|
-
expect { klass.sleep_before_retry(-1) }.to(raise_error(ArgumentError))
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
109
|
describe '.backoff_setup' do
|
130
110
|
context 'with valid arguments' do
|
131
111
|
it 'sets the backoff_intervals' do
|
@@ -154,12 +134,14 @@ RSpec.describe(Take2) do
|
|
154
134
|
describe 'class method' do
|
155
135
|
let(:retriable_error) { Net::HTTPRetriableError.new('Release the Kraken...many times!!', nil) }
|
156
136
|
before(:each) { @tries = 0 }
|
137
|
+
|
157
138
|
it 'responds to the method' do
|
158
139
|
expect(klass).to respond_to(:call_api_with_retry)
|
159
140
|
expect(klass).to respond_to(:with_retry)
|
160
141
|
expect(klass.method(:with_retry).original_name).to eq(klass.method(:call_api_with_retry).original_name)
|
161
142
|
expect(klass.method(:with_retry).source_location).to eq(klass.method(:call_api_with_retry).source_location)
|
162
143
|
end
|
144
|
+
|
163
145
|
it 'retries correct number of times' do
|
164
146
|
expect do
|
165
147
|
klass.call_api_with_retry { wrath_the_gods_with retriable_error }
|
@@ -168,6 +150,7 @@ RSpec.describe(Take2) do
|
|
168
150
|
nil
|
169
151
|
end
|
170
152
|
end
|
153
|
+
|
171
154
|
describe 'instance method' do
|
172
155
|
it 'responds to the method' do
|
173
156
|
expect(object).to respond_to(:call_api_with_retry)
|
@@ -175,6 +158,7 @@ RSpec.describe(Take2) do
|
|
175
158
|
expect(object.method(:with_retry).original_name).to eq(object.method(:call_api_with_retry).original_name)
|
176
159
|
expect(object.method(:with_retry).source_location).to eq(object.method(:call_api_with_retry).source_location)
|
177
160
|
end
|
161
|
+
|
178
162
|
context 'when raised with non retriable error' do
|
179
163
|
let(:error) { StandardError.new('Release the Kraken!!') }
|
180
164
|
|
data/take2.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.email = ["evnomadx@gmail.com"]
|
12
12
|
s.homepage = "https://github.com/restaurant-cheetah/take2"
|
13
13
|
s.summary = "Provides Take2 for your APIs calls"
|
14
|
-
s.description = "Retry API calls, methods or blocks of code. Define take2 retry behavior or
|
14
|
+
s.description = "Retry failed API calls, methods or blocks of code. Define take2 retry behavior on a class or method level and you good to go."
|
15
15
|
s.post_install_message = "Getting Take2 is dead easy!"
|
16
16
|
|
17
17
|
all_files = %x(git ls-files).split("\n")
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: take2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton Magids
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: Retry API calls, methods or blocks of code. Define take2 retry
|
14
|
-
or
|
13
|
+
description: Retry failed API calls, methods or blocks of code. Define take2 retry
|
14
|
+
behavior on a class or method level and you good to go.
|
15
15
|
email:
|
16
16
|
- evnomadx@gmail.com
|
17
17
|
executables: []
|
@@ -57,8 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
57
57
|
- !ruby/object:Gem::Version
|
58
58
|
version: '0'
|
59
59
|
requirements: []
|
60
|
-
|
61
|
-
rubygems_version: 2.7.9
|
60
|
+
rubygems_version: 3.0.8
|
62
61
|
signing_key:
|
63
62
|
specification_version: 4
|
64
63
|
summary: Provides Take2 for your APIs calls
|