activejob-retry 0.6.1 → 0.6.2

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: 5a5bb27165e98b31cb047ca32c39686a3c65d999
4
- data.tar.gz: 15d359bf6d2352c1b63f7f0729ce38ba12928a73
3
+ metadata.gz: bb158e4b3bbb44f1212648e777ca1701f5dab910
4
+ data.tar.gz: a93e0a2c4949b1a3e87024ada9508e0347f3ec84
5
5
  SHA512:
6
- metadata.gz: b95cb88b0dd261c6712fdd4063e94b0ada6b7854de361df98a424cee25f64fa01b967643a18665bf5120b2e5335339f1409d094b3e39f525538ec0f01bf6f1a3
7
- data.tar.gz: 9c8c5fe96d0d16926db4d13c05a78db0977b2d045a26b3fdea62f8f79194cc4f293221c96d84e8b97bacab0d18260b1d74938ac2a2f33c865409a3a97eb4f0bc
6
+ metadata.gz: 5f08d5d8a6466b54a798e988c50a8e27d6ab1c9273e5910e0c11b15a38facae0b7f75c3a5d5970b51178661f0a5e13ec624b36ffee97d1c64eae93c4946132f5
7
+ data.tar.gz: feef5212819586918cb91968980974c84a5e142ba94ace753d8cac05eb04e98fc3ebed1679c6582283791d8fe05ec44cea85d134e65ed75a42eb7f2a8c328e03
data/.gitignore CHANGED
@@ -3,3 +3,5 @@
3
3
  .rbx/
4
4
  *.gem
5
5
  .ruby-version
6
+ Gemfile.lock
7
+ Gemfile.*.lock
@@ -4,16 +4,22 @@ cache: bundler
4
4
  language: ruby
5
5
 
6
6
  matrix:
7
- allow_failures:
8
- - rvm: jruby
9
- - rvm: rbx-2
7
+ exclude:
8
+ # Rails 5.0 dropped support for Ruby <2.2
9
+ - rvm: 2.0
10
+ gemfile: Gemfile.activejob50
11
+ - rvm: 2.1
12
+ gemfile: Gemfile.activejob50
10
13
 
11
14
  rvm:
15
+ - 2.0
12
16
  - 2.1
13
- - 2.2
17
+ - 2.2.2
14
18
  - 2.3.1
15
- - jruby
16
- - rbx-2
19
+
20
+ gemfile:
21
+ - Gemfile.activejob42
22
+ - Gemfile.activejob50
17
23
 
18
24
  script:
19
25
  - bundle exec rubocop
@@ -16,5 +16,5 @@ group :test, :integration do
16
16
  # Specs
17
17
  gem 'sqlite3'
18
18
  gem 'pg'
19
- gem 'rails'
19
+ gem 'rails', '~> 4.2'
20
20
  end
@@ -0,0 +1,22 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :test, :integration do
6
+ # Queues
7
+ gem 'resque', require: false
8
+ gem 'resque-scheduler', require: false
9
+ gem 'sidekiq', require: false
10
+ gem 'delayed_job', require: false
11
+ gem 'delayed_job_active_record', require: false
12
+ gem 'que', require: false
13
+ gem 'backburner', require: false
14
+ gem 'sequel', require: false
15
+
16
+ # Specs
17
+ gem 'sqlite3'
18
+ gem 'pg'
19
+ gem 'rails', '~> 5.0'
20
+
21
+ gem 'pry'
22
+ end
data/README.md CHANGED
@@ -118,6 +118,13 @@ just executing the logic in the `rescue_from`, which makes manual re-enqueueing
118
118
  easier. On the other hand it does disable Sidekiq's automatic retrying for all
119
119
  ActiveJob jobs.
120
120
 
121
+ Supported Versions
122
+ ------------------
123
+
124
+ Rails 4.2 and 5.0 are supported, on all versions of MRI which they support, except
125
+ Ruby 1.9.3. Other Ruby runtimes (e.g. JRuby, Rubinius) probably work, but are not
126
+ tested in Travis CI.
127
+
121
128
  Contributing
122
129
  ------------
123
130
 
@@ -45,7 +45,9 @@ module ActiveJob
45
45
 
46
46
  def included(base)
47
47
  klass = self
48
- base.define_singleton_method(:inherited) { |subclass| subclass.include(klass) }
48
+ base.define_singleton_method(:inherited) do |subclass|
49
+ subclass.send(:include, klass)
50
+ end
49
51
  define_backoff_strategy(base)
50
52
  define_retry_attempt_tracking(base)
51
53
  define_retry_method(base)
@@ -102,10 +104,16 @@ module ActiveJob
102
104
  end
103
105
 
104
106
  def check_adapter!
105
- if PROBLEMATIC_ADAPTERS.include?(ActiveJob::Base.queue_adapter.name)
106
- warn("#{ActiveJob::Base.queue_adapter.name} does not support delayed retries, " \
107
- 'so does not work with ActiveJob::Retry. You may experience strange ' \
108
- 'behaviour.')
107
+ adapter = ActiveJob::Base.queue_adapter
108
+ adapter_name =
109
+ case adapter
110
+ when Class then adapter.name
111
+ else adapter.class.name
112
+ end
113
+
114
+ if PROBLEMATIC_ADAPTERS.include?(adapter_name)
115
+ warn("#{adapter_name} does not support delayed retries, so does not work with " \
116
+ 'ActiveJob::Retry. You may experience strange behaviour.')
109
117
  end
110
118
  end
111
119
 
@@ -1,5 +1,5 @@
1
1
  module ActiveJob
2
2
  class Retry < Module
3
- VERSION = '0.6.1'.freeze
3
+ VERSION = '0.6.2'.freeze
4
4
  end
5
5
  end
@@ -9,7 +9,7 @@ RSpec.describe ActiveJob::Retry do
9
9
  def perform(*_args)
10
10
  raise RuntimeError
11
11
  end
12
- end.include(retry_instance)
12
+ end.send(:include, retry_instance)
13
13
  end
14
14
 
15
15
  describe 'constant strategy' do
@@ -63,7 +63,7 @@ RSpec.describe ActiveJob::Retry do
63
63
  end
64
64
 
65
65
  it 'allows overriding' do
66
- subclass.include(described_class.new(strategy: :constant))
66
+ subclass.send(:include, described_class.new(strategy: :constant))
67
67
  expect(subclass.backoff_strategy).
68
68
  to be_a(ActiveJob::Retry::ConstantBackoffStrategy)
69
69
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activejob-retry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Isaac Seymour
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-01 00:00:00.000000000 Z
11
+ date: 2016-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -115,8 +115,8 @@ files:
115
115
  - ".rubocop.yml"
116
116
  - ".travis.yml"
117
117
  - CHANGELOG.md
118
- - Gemfile
119
- - Gemfile.lock
118
+ - Gemfile.activejob42
119
+ - Gemfile.activejob50
120
120
  - LICENSE
121
121
  - README.md
122
122
  - Rakefile
@@ -150,7 +150,6 @@ files:
150
150
  - test/adapters/sidekiq.rb
151
151
  - test/adapters/sneakers.rb
152
152
  - test/adapters/sucker_punch.rb
153
- - test/cases/adapter_test.rb
154
153
  - test/cases/callbacks_test.rb
155
154
  - test/cases/job_serialization_test.rb
156
155
  - test/cases/logging_test.rb
@@ -158,7 +157,6 @@ files:
158
157
  - test/cases/queuing_test.rb
159
158
  - test/cases/rescue_test.rb
160
159
  - test/cases/test_case_test.rb
161
- - test/cases/test_helper_test.rb
162
160
  - test/helper.rb
163
161
  - test/integration/queuing_test.rb
164
162
  - test/jobs/callback_job.rb
@@ -1,202 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- activejob-retry (0.6.1)
5
- activejob (>= 4.2)
6
- activesupport (>= 4.2)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actionmailer (4.2.6)
12
- actionpack (= 4.2.6)
13
- actionview (= 4.2.6)
14
- activejob (= 4.2.6)
15
- mail (~> 2.5, >= 2.5.4)
16
- rails-dom-testing (~> 1.0, >= 1.0.5)
17
- actionpack (4.2.6)
18
- actionview (= 4.2.6)
19
- activesupport (= 4.2.6)
20
- rack (~> 1.6)
21
- rack-test (~> 0.6.2)
22
- rails-dom-testing (~> 1.0, >= 1.0.5)
23
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
24
- actionview (4.2.6)
25
- activesupport (= 4.2.6)
26
- builder (~> 3.1)
27
- erubis (~> 2.7.0)
28
- rails-dom-testing (~> 1.0, >= 1.0.5)
29
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
30
- activejob (4.2.6)
31
- activesupport (= 4.2.6)
32
- globalid (>= 0.3.0)
33
- activemodel (4.2.6)
34
- activesupport (= 4.2.6)
35
- builder (~> 3.1)
36
- activerecord (4.2.6)
37
- activemodel (= 4.2.6)
38
- activesupport (= 4.2.6)
39
- arel (~> 6.0)
40
- activesupport (4.2.6)
41
- i18n (~> 0.7)
42
- json (~> 1.7, >= 1.7.7)
43
- minitest (~> 5.1)
44
- thread_safe (~> 0.3, >= 0.3.4)
45
- tzinfo (~> 1.1)
46
- arel (6.0.3)
47
- ast (2.2.0)
48
- backburner (1.3.0)
49
- beaneater (~> 1.0)
50
- dante (> 0.1.5)
51
- beaneater (1.0.0)
52
- builder (3.2.2)
53
- concurrent-ruby (1.0.2)
54
- connection_pool (2.2.0)
55
- dante (0.2.0)
56
- delayed_job (4.1.2)
57
- activesupport (>= 3.0, < 5.1)
58
- delayed_job_active_record (4.1.1)
59
- activerecord (>= 3.0, < 5.1)
60
- delayed_job (>= 3.0, < 5)
61
- diff-lcs (1.2.5)
62
- erubis (2.7.0)
63
- globalid (0.3.6)
64
- activesupport (>= 4.1.0)
65
- i18n (0.7.0)
66
- json (1.8.3)
67
- loofah (2.0.3)
68
- nokogiri (>= 1.5.9)
69
- mail (2.6.4)
70
- mime-types (>= 1.16, < 4)
71
- mime-types (3.0)
72
- mime-types-data (~> 3.2015)
73
- mime-types-data (3.2016.0221)
74
- mini_portile2 (2.0.0)
75
- minitest (5.9.0)
76
- mono_logger (1.1.0)
77
- multi_json (1.12.0)
78
- nokogiri (1.6.7.2)
79
- mini_portile2 (~> 2.0.0.rc2)
80
- parser (2.3.1.0)
81
- ast (~> 2.2)
82
- pg (0.18.4)
83
- powerpack (0.1.1)
84
- que (0.11.5)
85
- rack (1.6.4)
86
- rack-protection (1.5.3)
87
- rack
88
- rack-test (0.6.3)
89
- rack (>= 1.0)
90
- rails (4.2.6)
91
- actionmailer (= 4.2.6)
92
- actionpack (= 4.2.6)
93
- actionview (= 4.2.6)
94
- activejob (= 4.2.6)
95
- activemodel (= 4.2.6)
96
- activerecord (= 4.2.6)
97
- activesupport (= 4.2.6)
98
- bundler (>= 1.3.0, < 2.0)
99
- railties (= 4.2.6)
100
- sprockets-rails
101
- rails-deprecated_sanitizer (1.0.3)
102
- activesupport (>= 4.2.0.alpha)
103
- rails-dom-testing (1.0.7)
104
- activesupport (>= 4.2.0.beta, < 5.0)
105
- nokogiri (~> 1.6.0)
106
- rails-deprecated_sanitizer (>= 1.0.1)
107
- rails-html-sanitizer (1.0.3)
108
- loofah (~> 2.0)
109
- railties (4.2.6)
110
- actionpack (= 4.2.6)
111
- activesupport (= 4.2.6)
112
- rake (>= 0.8.7)
113
- thor (>= 0.18.1, < 2.0)
114
- rainbow (2.1.0)
115
- rake (11.1.2)
116
- redis (3.3.0)
117
- redis-namespace (1.5.2)
118
- redis (~> 3.0, >= 3.0.4)
119
- resque (1.26.0)
120
- mono_logger (~> 1.0)
121
- multi_json (~> 1.0)
122
- redis-namespace (~> 1.3)
123
- sinatra (>= 0.9.2)
124
- vegas (~> 0.1.2)
125
- resque-scheduler (4.2.0)
126
- mono_logger (~> 1.0)
127
- redis (~> 3.0)
128
- resque (~> 1.25)
129
- rufus-scheduler (~> 3.2)
130
- rspec (3.4.0)
131
- rspec-core (~> 3.4.0)
132
- rspec-expectations (~> 3.4.0)
133
- rspec-mocks (~> 3.4.0)
134
- rspec-core (3.4.4)
135
- rspec-support (~> 3.4.0)
136
- rspec-expectations (3.4.0)
137
- diff-lcs (>= 1.2.0, < 2.0)
138
- rspec-support (~> 3.4.0)
139
- rspec-its (1.2.0)
140
- rspec-core (>= 3.0.0)
141
- rspec-expectations (>= 3.0.0)
142
- rspec-mocks (3.4.1)
143
- diff-lcs (>= 1.2.0, < 2.0)
144
- rspec-support (~> 3.4.0)
145
- rspec-support (3.4.1)
146
- rubocop (0.40.0)
147
- parser (>= 2.3.1.0, < 3.0)
148
- powerpack (~> 0.1)
149
- rainbow (>= 1.99.1, < 3.0)
150
- ruby-progressbar (~> 1.7)
151
- unicode-display_width (~> 1.0, >= 1.0.1)
152
- ruby-progressbar (1.8.1)
153
- rufus-scheduler (3.2.1)
154
- sequel (4.34.0)
155
- sidekiq (4.1.2)
156
- concurrent-ruby (~> 1.0)
157
- connection_pool (~> 2.2, >= 2.2.0)
158
- redis (~> 3.2, >= 3.2.1)
159
- sinatra (1.4.7)
160
- rack (~> 1.5)
161
- rack-protection (~> 1.4)
162
- tilt (>= 1.3, < 3)
163
- sprockets (3.6.0)
164
- concurrent-ruby (~> 1.0)
165
- rack (> 1, < 3)
166
- sprockets-rails (3.0.4)
167
- actionpack (>= 4.0)
168
- activesupport (>= 4.0)
169
- sprockets (>= 3.0.0)
170
- sqlite3 (1.3.11)
171
- thor (0.19.1)
172
- thread_safe (0.3.5)
173
- tilt (2.0.4)
174
- tzinfo (1.2.2)
175
- thread_safe (~> 0.1)
176
- unicode-display_width (1.0.5)
177
- vegas (0.1.11)
178
- rack (>= 1.0.0)
179
-
180
- PLATFORMS
181
- ruby
182
-
183
- DEPENDENCIES
184
- activejob-retry!
185
- backburner
186
- delayed_job
187
- delayed_job_active_record
188
- pg
189
- que
190
- rails
191
- rake (>= 10.3)
192
- resque
193
- resque-scheduler
194
- rspec
195
- rspec-its
196
- rubocop
197
- sequel
198
- sidekiq
199
- sqlite3
200
-
201
- BUNDLED WITH
202
- 1.12.5
@@ -1,8 +0,0 @@
1
- require 'helper'
2
-
3
- class AdapterTest < ActiveSupport::TestCase
4
- test "should load #{ENV['AJADAPTER']} adapter" do
5
- ActiveJob::Base.queue_adapter = ENV['AJADAPTER'].to_sym
6
- assert_equal "active_job/queue_adapters/#{ENV['AJADAPTER']}_adapter".classify.constantize, ActiveJob::Base.queue_adapter
7
- end
8
- end
@@ -1,226 +0,0 @@
1
- require 'helper'
2
- require 'active_support/core_ext/time'
3
- require 'active_support/core_ext/date'
4
- require 'jobs/hello_job'
5
- require 'jobs/logging_job'
6
- require 'jobs/nested_job'
7
-
8
- class EnqueuedJobsTest < ActiveJob::TestCase
9
- def test_assert_enqueued_jobs
10
- assert_nothing_raised do
11
- assert_enqueued_jobs 1 do
12
- HelloJob.perform_later('david')
13
- end
14
- end
15
- end
16
-
17
- def test_repeated_enqueued_jobs_calls
18
- assert_nothing_raised do
19
- assert_enqueued_jobs 1 do
20
- HelloJob.perform_later('abdelkader')
21
- end
22
- end
23
-
24
- assert_nothing_raised do
25
- assert_enqueued_jobs 2 do
26
- HelloJob.perform_later('sean')
27
- HelloJob.perform_later('yves')
28
- end
29
- end
30
- end
31
-
32
- def test_assert_enqueued_jobs_with_no_block
33
- assert_nothing_raised do
34
- HelloJob.perform_later('rafael')
35
- assert_enqueued_jobs 1
36
- end
37
-
38
- assert_nothing_raised do
39
- HelloJob.perform_later('aaron')
40
- HelloJob.perform_later('matthew')
41
- assert_enqueued_jobs 3
42
- end
43
- end
44
-
45
- def test_assert_no_enqueued_jobs_with_no_block
46
- assert_nothing_raised do
47
- assert_no_enqueued_jobs
48
- end
49
- end
50
-
51
- def test_assert_no_enqueued_jobs
52
- assert_nothing_raised do
53
- assert_no_enqueued_jobs do
54
- HelloJob.perform_now
55
- end
56
- end
57
- end
58
-
59
- def test_assert_enqueued_jobs_too_few_sent
60
- error = assert_raise ActiveSupport::TestCase::Assertion do
61
- assert_enqueued_jobs 2 do
62
- HelloJob.perform_later('xavier')
63
- end
64
- end
65
-
66
- assert_match(/2 .* but 1/, error.message)
67
- end
68
-
69
- def test_assert_enqueued_jobs_too_many_sent
70
- error = assert_raise ActiveSupport::TestCase::Assertion do
71
- assert_enqueued_jobs 1 do
72
- HelloJob.perform_later('cristian')
73
- HelloJob.perform_later('guillermo')
74
- end
75
- end
76
-
77
- assert_match(/1 .* but 2/, error.message)
78
- end
79
-
80
- def test_assert_no_enqueued_jobs_failure
81
- error = assert_raise ActiveSupport::TestCase::Assertion do
82
- assert_no_enqueued_jobs do
83
- HelloJob.perform_later('jeremy')
84
- end
85
- end
86
-
87
- assert_match(/0 .* but 1/, error.message)
88
- end
89
-
90
- def test_assert_enqueued_job
91
- assert_enqueued_with(job: LoggingJob, queue: 'default') do
92
- LoggingJob.set(wait_until: Date.tomorrow.noon).perform_later
93
- end
94
- end
95
-
96
- def test_assert_enqueued_job_failure
97
- assert_raise ActiveSupport::TestCase::Assertion do
98
- assert_enqueued_with(job: LoggingJob, queue: 'default') do
99
- NestedJob.perform_later
100
- end
101
- end
102
-
103
- error = assert_raise ActiveSupport::TestCase::Assertion do
104
- assert_enqueued_with(job: NestedJob, queue: 'low') do
105
- NestedJob.perform_later
106
- end
107
- end
108
-
109
- assert_equal 'No enqueued job found with {:job=>NestedJob, :queue=>"low"}', error.message
110
- end
111
-
112
- def test_assert_enqueued_job_args
113
- assert_raise ArgumentError do
114
- assert_enqueued_with(class: LoggingJob) do
115
- NestedJob.set(wait_until: Date.tomorrow.noon).perform_later
116
- end
117
- end
118
- end
119
- end
120
-
121
- class PerformedJobsTest < ActiveJob::TestCase
122
- def test_assert_performed_jobs
123
- assert_nothing_raised do
124
- assert_performed_jobs 1 do
125
- HelloJob.perform_later('david')
126
- end
127
- end
128
- end
129
-
130
- def test_repeated_performed_jobs_calls
131
- assert_nothing_raised do
132
- assert_performed_jobs 1 do
133
- HelloJob.perform_later('abdelkader')
134
- end
135
- end
136
-
137
- assert_nothing_raised do
138
- assert_performed_jobs 2 do
139
- HelloJob.perform_later('sean')
140
- HelloJob.perform_later('yves')
141
- end
142
- end
143
- end
144
-
145
- def test_assert_performed_jobs_with_no_block
146
- assert_nothing_raised do
147
- perform_enqueued_jobs do
148
- HelloJob.perform_later('rafael')
149
- end
150
- assert_performed_jobs 1
151
- end
152
-
153
- assert_nothing_raised do
154
- perform_enqueued_jobs do
155
- HelloJob.perform_later('aaron')
156
- HelloJob.perform_later('matthew')
157
- assert_performed_jobs 3
158
- end
159
- end
160
- end
161
-
162
- def test_assert_no_performed_jobs_with_no_block
163
- assert_nothing_raised do
164
- assert_no_performed_jobs
165
- end
166
- end
167
-
168
- def test_assert_no_performed_jobs
169
- assert_nothing_raised do
170
- assert_no_performed_jobs do
171
- # empty block won't perform jobs
172
- end
173
- end
174
- end
175
-
176
- def test_assert_performed_jobs_too_few_sent
177
- error = assert_raise ActiveSupport::TestCase::Assertion do
178
- assert_performed_jobs 2 do
179
- HelloJob.perform_later('xavier')
180
- end
181
- end
182
-
183
- assert_match(/2 .* but 1/, error.message)
184
- end
185
-
186
- def test_assert_performed_jobs_too_many_sent
187
- error = assert_raise ActiveSupport::TestCase::Assertion do
188
- assert_performed_jobs 1 do
189
- HelloJob.perform_later('cristian')
190
- HelloJob.perform_later('guillermo')
191
- end
192
- end
193
-
194
- assert_match(/1 .* but 2/, error.message)
195
- end
196
-
197
- def test_assert_no_performed_jobs_failure
198
- error = assert_raise ActiveSupport::TestCase::Assertion do
199
- assert_no_performed_jobs do
200
- HelloJob.perform_later('jeremy')
201
- end
202
- end
203
-
204
- assert_match(/0 .* but 1/, error.message)
205
- end
206
-
207
- def test_assert_performed_job
208
- assert_performed_with(job: NestedJob, queue: 'default') do
209
- NestedJob.perform_later
210
- end
211
- end
212
-
213
- def test_assert_performed_job_failure
214
- assert_raise ActiveSupport::TestCase::Assertion do
215
- assert_performed_with(job: LoggingJob, at: Date.tomorrow.noon, queue: 'default') do
216
- NestedJob.set(wait_until: Date.tomorrow.noon).perform_later
217
- end
218
- end
219
-
220
- assert_raise ActiveSupport::TestCase::Assertion do
221
- assert_performed_with(job: NestedJob, at: Date.tomorrow.noon, queue: 'low') do
222
- NestedJob.set(queue: 'low', wait_until: Date.tomorrow.noon).perform_later
223
- end
224
- end
225
- end
226
- end