perfect_retry 0.4.0 → 0.5.0

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: 91a3e0ae52cdd51cc087c67001602f26754b9959
4
- data.tar.gz: 46ab65fcdea92f041cd8b49818adfcca12330564
3
+ metadata.gz: 8740ad7912179f8d22f7887f9f5e0999be1fbda8
4
+ data.tar.gz: 85eea90f46f97ca8fbdbf27118e9d75c4f0c067a
5
5
  SHA512:
6
- metadata.gz: 9f0999eec296ff61a7bce726a7dba876d1d09cf171aaad2a963dcc72bb608a8d7767554cfadabd3e5fd4f573ba726018af0ddc9da58fd75ea0c8cf0cd1bd77b6
7
- data.tar.gz: e518ec8bf05520a5833de6da270de9019395f9257ef1beff87b647bdee2681d9d8fe7de112a17d133fa2fececabd55afb81c81d30fdad1186c2a5498dbbf7099
6
+ metadata.gz: 6e88c3b13ca2c1a075da4d67a8de3409731903ee585b9247da0391525093f615e5744037f2e11209d1a67c55e144caf1da385345b9fe0fb75281c03aa374aaff
7
+ data.tar.gz: 5024c04e1744a705f12aab36cfd121ac0dbd97f5d35197faa78f6dbcc103b742e1f66652a8ed025179a31414a14c37d63efd6b60dc3634ecf8e5892cff99b58a
data/NEWS.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.5.0 2016-04-14
2
+
3
+ - [enhancement] Add `prefer_original_backtrace` and `raise_original_error` options. [#6](https://github.com/uu59/perfect_retry/pull/6)
4
+
1
5
  # 0.4.0 2016-01-19
2
6
 
3
7
  - [enhancement] Add `PerfectRetry.disable!` and `PerfectRetry.enable!` for testing. [#5](https://github.com/uu59/perfect_retry/pull/5)
data/README.md CHANGED
@@ -49,6 +49,15 @@ PerfectRetry.register(:timeout_handling) do |config|
49
49
  # Ensure block. Call this block after with_retry block finished with and without any errors.
50
50
  # default: proc {}
51
51
  config.ensure = proc { puts "finished" }
52
+
53
+ # (v0.5) Raise original error when too many retried (if true). Otherwise PerfectRetry::TooManyRetry raised (if false).
54
+ # default: false
55
+ config.raise_original_error = true
56
+
57
+ # (v0.5) Raised exception has original backtrace (if true). Otherwise PerfectRetry internally backtrace (if false).
58
+ # If raise_original_error = true, this option do nothing.
59
+ # default: false
60
+ config.prefer_original_backtrace = false
52
61
  end
53
62
 
54
63
  # in main.rb
data/lib/perfect_retry.rb CHANGED
@@ -14,6 +14,8 @@ class PerfectRetry
14
14
  log_level: :info, # CHANGE(1.0): to be `nil`
15
15
  sleep: lambda{|n| n ** 2}, # CHANGE(1.0): to be exponential backoff algorithm
16
16
  ensure: lambda{},
17
+ raise_original_error: false, # false for TooManyRetry, true for original error
18
+ prefer_original_backtrace: false, # CHANGE(1.0): to be `true`
17
19
  }.freeze
18
20
 
19
21
  def self.with_retry(config_key = nil, &block)
@@ -82,7 +84,15 @@ class PerfectRetry
82
84
  retry
83
85
  end
84
86
 
85
- raise TooManyRetry.new("too many retry (#{config.limit} times)")
87
+ if config.raise_original_error
88
+ raise e
89
+ else
90
+ error = TooManyRetry.new("too many retry (#{config.limit} times)")
91
+ if config.prefer_original_backtrace
92
+ error.set_backtrace(e.backtrace)
93
+ end
94
+ raise error
95
+ end
86
96
  ensure
87
97
  config.ensure.call
88
98
  end
@@ -1,7 +1,7 @@
1
1
  require "logger"
2
2
 
3
3
  class PerfectRetry
4
- class Config < Struct.new(:limit, :rescues, :dont_rescues, :logger, :sleep, :ensure, :log_level)
4
+ class Config < Struct.new(:limit, :rescues, :dont_rescues, :logger, :sleep, :ensure, :log_level, :raise_original_error, :prefer_original_backtrace)
5
5
  def self.create_from_hash(hash)
6
6
  config = new
7
7
  hash.each do |k, v|
@@ -1,3 +1,3 @@
1
1
  class PerfectRetry
2
- VERSION = "0.4.0".freeze
2
+ VERSION = "0.5.0".freeze
3
3
  end
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.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - uu59
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-19 00:00:00.000000000 Z
11
+ date: 2016-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.4.5.1
110
+ rubygems_version: 2.5.1
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Retry handling kit