perfect_retry 0.4.0 → 0.5.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 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