resque-retry 1.5.3 → 1.6.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
  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