perfect_retry 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/NEWS.md +4 -0
- data/README.md +30 -0
- data/lib/perfect_retry/config.rb +1 -1
- data/lib/perfect_retry/version.rb +1 -1
- data/lib/perfect_retry.rb +3 -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: 5a5d8b36518c3ae65ced85419d129157159d49ff
|
4
|
+
data.tar.gz: 5d71eb684a0e7a8b15cc3e6435919fdce3e03872
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afa1392736a1f0e153dd3574ba97b112463deae81e85cf0b850c05df583918064752976b4871cbe9aa618331eb381faf4f2444a81e112f728b203d18c24bf6f5
|
7
|
+
data.tar.gz: 8f758b82c59ad5a98bc4e40afe7ab03672b8ed1a07fa51f0a44d2b0a3ca5dbc8ec84556adf2214ee13358ff718071a877b82faee6cc25e4ec8ae88b0d00eae62
|
data/NEWS.md
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
[](https://travis-ci.org/uu59/perfect_retry)
|
2
2
|
[](https://codeclimate.com/github/uu59/perfect_retry)
|
3
3
|
[](https://codeclimate.com/github/uu59/perfect_retry/coverage)
|
4
|
+
[](https://badge.fury.io/rb/perfect_retry)
|
4
5
|
|
5
6
|
# PerfectRetry
|
6
7
|
|
@@ -28,7 +29,12 @@ PerfectRetry.register(:timeout_handling) do |config|
|
|
28
29
|
# default: [StandardError]
|
29
30
|
config.rescues = [Timeout::Error, StandardError]
|
30
31
|
|
32
|
+
# Don't rescue, don't retry when these error raised.
|
33
|
+
# default: []
|
34
|
+
config.dont_rescues = [SyntaxError]
|
35
|
+
|
31
36
|
# Sleep this seconds before next retry. `n` is a retry times (1-origin).
|
37
|
+
# Infinity retry if `nil` is set.
|
32
38
|
# default: proc{|n| n ** 2}
|
33
39
|
config.sleep = proc{|n| n * 5 }
|
34
40
|
|
@@ -56,6 +62,30 @@ PerfectRetry.with_retry(:timeout_handling) do
|
|
56
62
|
end
|
57
63
|
```
|
58
64
|
|
65
|
+
### Custom config without register
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
pr = PerfectRetry.new do |config|
|
69
|
+
# based on default config
|
70
|
+
config.sleep = 1
|
71
|
+
config.rescues = [Timeout::Error]
|
72
|
+
end
|
73
|
+
|
74
|
+
pr.with_retry do
|
75
|
+
open("http://example.com")
|
76
|
+
end
|
77
|
+
|
78
|
+
# Also you can extend registered config
|
79
|
+
pr = PerfectRetry.new(:some_registered) do |config|
|
80
|
+
config.ensure = proc{ puts "done" }
|
81
|
+
end
|
82
|
+
|
83
|
+
pr.with_retry do
|
84
|
+
# something to do
|
85
|
+
end
|
86
|
+
```
|
87
|
+
|
88
|
+
|
59
89
|
### Manually retry
|
60
90
|
|
61
91
|
```ruby
|
data/lib/perfect_retry/config.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "logger"
|
2
2
|
|
3
3
|
class PerfectRetry
|
4
|
-
class Config < Struct.new(:limit, :rescues, :logger, :sleep, :ensure)
|
4
|
+
class Config < Struct.new(:limit, :rescues, :dont_rescues, :logger, :sleep, :ensure)
|
5
5
|
def self.create_from_hash(hash)
|
6
6
|
config = new
|
7
7
|
hash.each do |k, v|
|
data/lib/perfect_retry.rb
CHANGED
@@ -9,6 +9,7 @@ class PerfectRetry
|
|
9
9
|
DEFAULTS = {
|
10
10
|
limit: 5,
|
11
11
|
rescues: [StandardError],
|
12
|
+
dont_rescues: [],
|
12
13
|
logger: Logger.new(STDERR),
|
13
14
|
sleep: lambda{|n| n ** 2},
|
14
15
|
ensure: lambda{},
|
@@ -51,6 +52,8 @@ class PerfectRetry
|
|
51
52
|
count = 0
|
52
53
|
begin
|
53
54
|
retry_with_catch(count, &block)
|
55
|
+
rescue *config.dont_rescues => e
|
56
|
+
raise e
|
54
57
|
rescue *config.rescues => e
|
55
58
|
if should_retry?(count)
|
56
59
|
count += 1
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perfect_retry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- uu59
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|