resque-retry 1.5.3 → 1.6.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
  SHA256:
3
- metadata.gz: 6aa034bb302b1946fcc3900ef412f35ab3d56aa18718304b6ec91ed997020d29
4
- data.tar.gz: ead7a803c822ec57b55994621f13fa8a788b17743e1f682eb72b361b0f59eadc
3
+ metadata.gz: 18f7b00c3922adebe816efc0357bfba5925dddc5ae85bea9d4b69e0a05e9fb46
4
+ data.tar.gz: dd4d14d570a628aa667445cd4f64929ecc0bcab22bc536b164bc9e9437574a59
5
5
  SHA512:
6
- metadata.gz: a71f62fe40bd8cda477a7a17071e738b16425b8b97f7122dec69eb28808167ad82ac148b58d25824b0dc554377e490c4ca7aa92df652913fb9504bf1a69054ef
7
- data.tar.gz: f087615ff9a87816f9bda22ac9258f70aad0d564e54afe9342796ca5f59b0cee40c8b8be6cc905617987e58682d33496465bf611d6caf8a30d38ab52c322cff5
6
+ metadata.gz: ffab51ba83437149d5bc39400983e436a38cd4e2d200b7562fa892f16f6facf1310a0dcf666030d8181aec5424dbcd80c146983ce25b3579f7e9a4088692dc8f
7
+ data.tar.gz: dcef4495dfc111270f16bb02dafa72d1fb66caebe4302dbb0359aad2dcaf72f29c887cc7e0caa22c3ef012aba5813933fb19c1c210b597bea17b6ab4ab561ff6
@@ -7,7 +7,8 @@ matrix:
7
7
  - rvm: jruby-9.1.9.0
8
8
 
9
9
  rvm:
10
- - 2.3.7
11
- - 2.4.4
12
- - 2.5.1
10
+ - 2.3.8
11
+ - 2.4.6
12
+ - 2.5.5
13
+ - 2.6.3
13
14
  - jruby-9.1.9.0
data/HISTORY.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 1.6.0 (2019-04-21)
2
+
3
+ * Clean-up / refactoring in preparation for a release (`ruby` deprecations, etc.)
4
+ * Loosen version requirement to allow resque v2.0 and up (@peret)
5
+
1
6
  # 1.5.3 (2018-11-26)
2
7
 
3
8
  * Monkey patch in the `requeue_queue` method onto the `Resque::Failure` backend (this _should_ be a temporary fix)
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  resque-retry
2
2
  ============
3
3
 
4
- A [Resque][resque] plugin. Requires Resque ~> 1.25 & [resque-scheduler][resque-scheduler] ~> 4.0.
4
+ A [Resque][resque] plugin. Requires Resque ~> 1.25 or Resque ~> 2.0 & [resque-scheduler][resque-scheduler] ~> 4.0.
5
5
 
6
6
  This gem provides retry, delay and exponential backoff support for resque jobs.
7
7
 
@@ -1,3 +1,3 @@
1
1
  module ResqueRetry
2
- VERSION = '1.5.3'
2
+ VERSION = '1.6.0'
3
3
  end
@@ -89,8 +89,12 @@ module Resque
89
89
  # https://github.com/resque/resque/pull/1659
90
90
  #
91
91
  # @api public
92
- def self.requeue_queue(queue)
93
- classes.first.requeue_queue(queue)
92
+ class_eval do |klass|
93
+ if !klass.respond_to?(:requeue_queue)
94
+ def klass.requeue_queue(queue)
95
+ classes.first.requeue_queue(queue)
96
+ end
97
+ end
94
98
  end
95
99
 
96
100
  protected
@@ -52,12 +52,16 @@ module Resque
52
52
  #
53
53
  # @api private
54
54
  def self.extended(receiver)
55
+ retry_delay_multiplicand_min = DEFAULT_RETRY_DELAY_MULTIPLICAND_MIN
55
56
  retry_delay_multiplicand_min = \
56
- receiver.instance_variable_get("@retry_delay_multiplicand_min") || \
57
- DEFAULT_RETRY_DELAY_MULTIPLICAND_MIN
57
+ receiver.instance_variable_get(:@retry_delay_multiplicand_min) \
58
+ if receiver.instance_variable_defined?(:@retry_delay_multiplicand_min)
59
+
60
+ retry_delay_multiplicand_max = DEFAULT_RETRY_DELAY_MULTIPLICAND_MAX
58
61
  retry_delay_multiplicand_max = \
59
- receiver.instance_variable_get("@retry_delay_multiplicand_max") || \
60
- DEFAULT_RETRY_DELAY_MULTIPLICAND_MAX
62
+ receiver.instance_variable_get(:@retry_delay_multiplicand_max) \
63
+ if receiver.instance_variable_defined?(:@retry_delay_multiplicand_max)
64
+
61
65
  if retry_delay_multiplicand_min > retry_delay_multiplicand_max
62
66
  raise InvalidRetryDelayMultiplicandConfigurationException.new(
63
67
  %{"@retry_delay_multiplicand_min" must be less than or equal to "@retry_delay_multiplicand_max"}
@@ -52,8 +52,13 @@ module Resque
52
52
  #
53
53
  # @api private
54
54
  def self.extended(receiver)
55
- retry_exceptions = receiver.instance_variable_get('@retry_exceptions')
56
- fatal_exceptions = receiver.instance_variable_get('@fatal_exceptions')
55
+ retry_exceptions = nil
56
+ retry_exceptions = receiver.instance_variable_get(:@retry_exceptions) \
57
+ if receiver.instance_variable_defined?(:@retry_exceptions)
58
+
59
+ fatal_exceptions = nil
60
+ fatal_exceptions = receiver.instance_variable_get(:@fatal_exceptions) \
61
+ if receiver.instance_variable_defined?(:@fatal_exceptions)
57
62
 
58
63
  if fatal_exceptions && retry_exceptions
59
64
  raise AmbiguousRetryStrategyException.new(%{You can't define both "@fatal_exceptions" and "@retry_exceptions"})
@@ -130,7 +135,7 @@ module Resque
130
135
  #
131
136
  # @api public
132
137
  def retry_delay(exception_class = nil)
133
- if @retry_exceptions.is_a?(Hash)
138
+ if instance_variable_defined?(:@retry_exceptions) && @retry_exceptions.is_a?(Hash)
134
139
  delay = @retry_exceptions[exception_class] ||= begin
135
140
  relevant_definitions = @retry_exceptions.select { |ex| exception_class <= ex }
136
141
  relevant_definitions.any? ? relevant_definitions.sort.first[1] : 0
@@ -261,7 +266,7 @@ module Resque
261
266
  #
262
267
  # @api public
263
268
  def retry_exceptions
264
- if @retry_exceptions.is_a?(Hash)
269
+ if instance_variable_defined?(:@retry_exceptions) && @retry_exceptions.is_a?(Hash)
265
270
  @retry_exceptions.keys
266
271
  else
267
272
  @retry_exceptions ||= nil
@@ -487,7 +492,8 @@ module Resque
487
492
  # This hook is called from a worker processes, not the job process
488
493
  # that failed with a DirtyExit, so @retry_attempt wasn't set yet
489
494
  @retry_attempt = Resque.redis.get(redis_retry_key(*args)).to_i
490
- elsif @on_failure_retry_hook_already_called
495
+ elsif instance_variable_defined?(:@on_failure_retry_hook_already_called) && \
496
+ @on_failure_retry_hook_already_called
491
497
  log_message 'on_failure_retry_hook_already_called', args, exception
492
498
  return
493
499
  end
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
29
29
  s.files = `git ls-files`.split($/)
30
30
  s.require_paths = %w[lib]
31
31
 
32
- s.add_dependency('resque', '~> 1.25')
32
+ s.add_dependency('resque', '>= 1.25', '< 3.0')
33
33
  s.add_dependency('resque-scheduler', '~> 4.0')
34
34
 
35
35
  s.add_development_dependency('rake', '~> 10.3')
@@ -14,7 +14,6 @@ class MockFailureBackend < Resque::Failure::Base
14
14
  end
15
15
 
16
16
  class MultipleFailureTest < Minitest::Test
17
-
18
17
  def setup
19
18
  Resque.redis.flushall
20
19
  @worker = Resque::Worker.new(:testing)
@@ -27,8 +26,7 @@ class MultipleFailureTest < Minitest::Test
27
26
  end
28
27
 
29
28
  def failure_key_for(klass)
30
- args = []
31
- key = 'failure-' + klass.redis_retry_key(args)
29
+ 'failure-' + klass.redis_retry_key([])
32
30
  end
33
31
 
34
32
  def test_failure_is_passed_on_when_job_class_not_found
@@ -41,7 +39,9 @@ class MultipleFailureTest < Minitest::Test
41
39
  perform_next_job(@worker)
42
40
 
43
41
  assert_equal 1, MockFailureBackend.errors.count, 'should have one error'
44
- assert_match /uninitialized constant.* LimitThreeJobTemp/, MockFailureBackend.errors.first
42
+
43
+ uninitialized_constant_pattern = /uninitialized constant.* LimitThreeJobTemp/
44
+ assert_match uninitialized_constant_pattern, MockFailureBackend.errors.first
45
45
  end
46
46
 
47
47
  def test_last_failure_is_saved_in_redis_if_delay
@@ -1,11 +1,15 @@
1
1
  require 'test_helper'
2
2
 
3
- # make sure the worlds not fallen from beneith us.
4
3
  class ResqueTest < Minitest::Test
5
4
  def test_resque_version
6
- major, minor, patch = Resque::Version.split('.')
7
- assert_equal 1, major.to_i, 'major version does not match'
8
- assert_operator minor.to_i, :>=, 8, 'minor version is too low'
5
+ major, minor, _ = Resque::Version.split('.')
6
+ assert [1, 2].include?(major.to_i), 'major version does not match'
7
+
8
+ if major.to_i == 1
9
+ assert_operator minor.to_i, :>=, 25, 'minor version is too low'
10
+ else
11
+ assert_operator minor.to_i, :>=, 0, 'minor version is too low'
12
+ end
9
13
  end
10
14
 
11
15
  def test_good_job
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RetryTest < Minitest::Test
3
+ class RetryExeptionDelayTest < Minitest::Test
4
4
  def setup
5
5
  Resque.redis.flushall
6
6
  @worker = Resque::Worker.new(:testing)
@@ -364,8 +364,15 @@ class BaseJob < AsyncJob
364
364
 
365
365
  def inherited(subclass)
366
366
  super
367
- %w(@retry_exceptions @retry_delay @retry_limit @auto_retry_limit).each do |variable|
368
- value = BaseJob.instance_variable_get(variable)
367
+ %i[
368
+ @auto_retry_limit
369
+ @retry_delay
370
+ @retry_exceptions
371
+ @retry_limit
372
+ ].each do |variable|
373
+ value = nil
374
+ value = BaseJob.instance_variable_get(variable) \
375
+ if BaseJob.instance_variable_defined?(variable)
369
376
  value = value.dup rescue value
370
377
  subclass.instance_variable_set(variable, value)
371
378
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-retry
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.3
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Antins
@@ -10,22 +10,28 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-11-26 00:00:00.000000000 Z
13
+ date: 2019-04-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: resque
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - "~>"
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: '1.25'
22
+ - - "<"
23
+ - !ruby/object:Gem::Version
24
+ version: '3.0'
22
25
  type: :runtime
23
26
  prerelease: false
24
27
  version_requirements: !ruby/object:Gem::Requirement
25
28
  requirements:
26
- - - "~>"
29
+ - - ">="
27
30
  - !ruby/object:Gem::Version
28
31
  version: '1.25'
32
+ - - "<"
33
+ - !ruby/object:Gem::Version
34
+ version: '3.0'
29
35
  - !ruby/object:Gem::Dependency
30
36
  name: resque-scheduler
31
37
  requirement: !ruby/object:Gem::Requirement
@@ -217,8 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
217
223
  - !ruby/object:Gem::Version
218
224
  version: '0'
219
225
  requirements: []
220
- rubyforge_project:
221
- rubygems_version: 2.7.6
226
+ rubygems_version: 3.0.3
222
227
  signing_key:
223
228
  specification_version: 4
224
229
  summary: A resque plugin; provides retry, delay and exponential backoff support for