retryable 1.3.4 → 1.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +13 -2
- data/lib/retryable.rb +2 -1
- data/lib/retryable/version.rb +1 -1
- data/spec/lib/retryable_spec.rb +8 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cc19b6b707fdd02171896378738cffa3c063cc6
|
4
|
+
data.tar.gz: 70efcfedc8895f963c166ed19374653521fb271a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a302e5df64a1923ef5166f01c3d9ca1e70ee76b07ff50ebe03b51e99d1fb7ce9054aa93cb7e84096fedf7f7d38fbf9866873b6354c6fef5a51457cedf00448e3
|
7
|
+
data.tar.gz: d59b938aad7314d2ea885e86945642393ad4f11ce3f80b0fedbb22c120593fef03fe1acdbc81dabef9324b77afa4cc2f1922b4bbf0e0630b892de5514d19e215
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -9,7 +9,7 @@ Description
|
|
9
9
|
Runs a code block, and retries it when an exception occurs. It's great when
|
10
10
|
working with flakey webservices (for example).
|
11
11
|
|
12
|
-
It's configured using four optional parameters `:tries`, `:on`, `:sleep`, `:matching`, `:ensure` and
|
12
|
+
It's configured using four optional parameters `:tries`, `:on`, `:sleep`, `:matching`, `:ensure`, `:exception_cb` and
|
13
13
|
runs the passed block. Should an exception occur, it'll retry for (n-1) times.
|
14
14
|
|
15
15
|
Should the number of retries be reached without success, the last exception
|
@@ -56,7 +56,7 @@ end
|
|
56
56
|
|
57
57
|
## Defaults
|
58
58
|
|
59
|
-
:tries => 2, :on => StandardError, :sleep => 1, :matching => /.*/, :ensure => Proc.new { }
|
59
|
+
:tries => 2, :on => StandardError, :sleep => 1, :matching => /.*/, :ensure => Proc.new { }, :exception_cb => Proc.new { }
|
60
60
|
|
61
61
|
Sleeping
|
62
62
|
--------
|
@@ -89,6 +89,17 @@ retryable do |retries, exception|
|
|
89
89
|
end
|
90
90
|
```
|
91
91
|
|
92
|
+
Callback to run after an exception is rescued
|
93
|
+
--------
|
94
|
+
exception_cb = Proc.new do |exception|
|
95
|
+
ExceptionNotifier.notify_exception(exception, :data => {:message => "it failed"}) # http://smartinez87.github.io/exception_notification
|
96
|
+
end
|
97
|
+
|
98
|
+
retryable(:exception_cb => exception_cb) do
|
99
|
+
# perform risky operation
|
100
|
+
end
|
101
|
+
|
102
|
+
|
92
103
|
You can temporary disable retryable blocks
|
93
104
|
--------
|
94
105
|
|
data/lib/retryable.rb
CHANGED
@@ -3,7 +3,7 @@ require 'retryable/config'
|
|
3
3
|
|
4
4
|
module Kernel
|
5
5
|
def retryable(options = {}, &block)
|
6
|
-
opts = {:tries => 2, :sleep => 1, :on => StandardError, :matching => /.*/, :ensure => Proc.new {}}
|
6
|
+
opts = {:tries => 2, :sleep => 1, :on => StandardError, :matching => /.*/, :ensure => Proc.new {}, :exception_cb => Proc.new {}}
|
7
7
|
check_for_invalid_options(options, opts)
|
8
8
|
opts.merge!(options)
|
9
9
|
|
@@ -28,6 +28,7 @@ module Kernel
|
|
28
28
|
|
29
29
|
retries += 1
|
30
30
|
retry_exception = exception
|
31
|
+
opts[:exception_cb].call(retry_exception)
|
31
32
|
retry
|
32
33
|
ensure
|
33
34
|
opts[:ensure].call(retries)
|
data/lib/retryable/version.rb
CHANGED
@@ -2,7 +2,7 @@ module Retryable
|
|
2
2
|
class Version
|
3
3
|
MAJOR = 1 unless defined? Retryable::Version::MAJOR
|
4
4
|
MINOR = 3 unless defined? Retryable::Version::MINOR
|
5
|
-
PATCH =
|
5
|
+
PATCH = 5 unless defined? Retryable::Version::PATCH
|
6
6
|
|
7
7
|
class << self
|
8
8
|
|
data/spec/lib/retryable_spec.rb
CHANGED
@@ -107,4 +107,12 @@ describe 'Kernel.retryable' do
|
|
107
107
|
retryable(:bad_option => 2) { raise "this is bad" }
|
108
108
|
end.should raise_error ArgumentError, '[Retryable] Invalid options: bad_option'
|
109
109
|
end
|
110
|
+
|
111
|
+
it 'accepts a callback to run after an exception is rescued' do
|
112
|
+
lambda do
|
113
|
+
retryable(:sleep => 0, :exception_cb => Proc.new {|e| @raised = e.to_s }) {|tries, ex| raise StandardError.new("this is fun!") if tries < 1 }
|
114
|
+
end.should_not raise_error
|
115
|
+
|
116
|
+
@raised.should == "this is fun!"
|
117
|
+
end
|
110
118
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: retryable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikita Fedyashev
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-01
|
13
|
+
date: 2014-02-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|