activejob 6.0.6.1 → 6.1.7.6
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 +4 -4
- data/CHANGELOG.md +108 -140
- data/MIT-LICENSE +1 -2
- data/README.md +1 -3
- data/lib/active_job/base.rb +3 -0
- data/lib/active_job/callbacks.rb +44 -4
- data/lib/active_job/core.rb +2 -2
- data/lib/active_job/enqueuing.rb +3 -13
- data/lib/active_job/exceptions.rb +29 -20
- data/lib/active_job/execution.rb +9 -1
- data/lib/active_job/gem_version.rb +3 -3
- data/lib/active_job/instrumentation.rb +40 -0
- data/lib/active_job/log_subscriber.rb +140 -0
- data/lib/active_job/logging.rb +3 -132
- data/lib/active_job/queue_adapter.rb +4 -1
- data/lib/active_job/queue_adapters/sucker_punch_adapter.rb +1 -1
- data/lib/active_job/queue_adapters/test_adapter.rb +6 -2
- data/lib/active_job/queue_adapters.rb +5 -1
- data/lib/active_job/queue_name.rb +2 -2
- data/lib/active_job/railtie.rb +4 -0
- data/lib/active_job/serializers/date_time_serializer.rb +1 -5
- data/lib/active_job/serializers/module_serializer.rb +20 -0
- data/lib/active_job/serializers/object_serializer.rb +1 -1
- data/lib/active_job/serializers/time_object_serializer.rb +13 -0
- data/lib/active_job/serializers/time_serializer.rb +1 -5
- data/lib/active_job/serializers/time_with_zone_serializer.rb +1 -5
- data/lib/active_job/serializers.rb +4 -1
- data/lib/active_job/test_helper.rb +82 -80
- data/lib/active_job.rb +1 -1
- metadata +12 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b28fe0654bb20d3c60ac03d80c9570ae206da676ddbc24172f255f7c85347689
|
4
|
+
data.tar.gz: 4a1a372d7cfc7393f4da5f971d60034b0531e00196903a29674ae9436a1d966b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 314fea74bf234e8de9c8d9280f4a6ef50e00e5a1e868d88a249b81bded37ea8ddf13150b070138de403d025c0ae08366fa3576ac72aa53e5bd3c1aacc2a23cae
|
7
|
+
data.tar.gz: 47b48ba2e74b1a0c0836f9e5370f2302d3c33f030f9ce7546d93c5d5d3513cb73ca974a99f277cf2d2ea4c4573c79374d922f3ffda4828a2d5b567bedf352927
|
data/CHANGELOG.md
CHANGED
@@ -1,293 +1,261 @@
|
|
1
|
-
## Rails 6.
|
1
|
+
## Rails 6.1.7.6 (August 22, 2023) ##
|
2
2
|
|
3
3
|
* No changes.
|
4
4
|
|
5
5
|
|
6
|
-
## Rails 6.
|
6
|
+
## Rails 6.1.7.5 (August 22, 2023) ##
|
7
7
|
|
8
8
|
* No changes.
|
9
9
|
|
10
10
|
|
11
|
-
## Rails 6.
|
11
|
+
## Rails 6.1.7.4 (June 26, 2023) ##
|
12
12
|
|
13
13
|
* No changes.
|
14
14
|
|
15
15
|
|
16
|
-
## Rails 6.
|
16
|
+
## Rails 6.1.7.3 (March 13, 2023) ##
|
17
17
|
|
18
18
|
* No changes.
|
19
19
|
|
20
20
|
|
21
|
-
## Rails 6.
|
21
|
+
## Rails 6.1.7.2 (January 24, 2023) ##
|
22
22
|
|
23
23
|
* No changes.
|
24
24
|
|
25
25
|
|
26
|
-
## Rails 6.
|
26
|
+
## Rails 6.1.7.1 (January 17, 2023) ##
|
27
27
|
|
28
28
|
* No changes.
|
29
29
|
|
30
30
|
|
31
|
-
## Rails 6.
|
31
|
+
## Rails 6.1.7 (September 09, 2022) ##
|
32
32
|
|
33
33
|
* No changes.
|
34
34
|
|
35
35
|
|
36
|
-
## Rails 6.
|
36
|
+
## Rails 6.1.6.1 (July 12, 2022) ##
|
37
37
|
|
38
38
|
* No changes.
|
39
39
|
|
40
40
|
|
41
|
-
## Rails 6.
|
41
|
+
## Rails 6.1.6 (May 09, 2022) ##
|
42
42
|
|
43
43
|
* No changes.
|
44
44
|
|
45
45
|
|
46
|
-
## Rails 6.
|
46
|
+
## Rails 6.1.5.1 (April 26, 2022) ##
|
47
47
|
|
48
48
|
* No changes.
|
49
49
|
|
50
50
|
|
51
|
-
## Rails 6.
|
51
|
+
## Rails 6.1.5 (March 09, 2022) ##
|
52
52
|
|
53
53
|
* No changes.
|
54
54
|
|
55
55
|
|
56
|
-
## Rails 6.
|
56
|
+
## Rails 6.1.4.7 (March 08, 2022) ##
|
57
57
|
|
58
58
|
* No changes.
|
59
59
|
|
60
60
|
|
61
|
-
## Rails 6.
|
61
|
+
## Rails 6.1.4.6 (February 11, 2022) ##
|
62
62
|
|
63
63
|
* No changes.
|
64
64
|
|
65
65
|
|
66
|
-
## Rails 6.
|
66
|
+
## Rails 6.1.4.5 (February 11, 2022) ##
|
67
67
|
|
68
68
|
* No changes.
|
69
69
|
|
70
70
|
|
71
|
-
## Rails 6.
|
71
|
+
## Rails 6.1.4.4 (December 15, 2021) ##
|
72
72
|
|
73
73
|
* No changes.
|
74
74
|
|
75
75
|
|
76
|
-
## Rails 6.
|
76
|
+
## Rails 6.1.4.3 (December 14, 2021) ##
|
77
77
|
|
78
78
|
* No changes.
|
79
79
|
|
80
80
|
|
81
|
-
## Rails 6.
|
81
|
+
## Rails 6.1.4.2 (December 14, 2021) ##
|
82
82
|
|
83
83
|
* No changes.
|
84
84
|
|
85
85
|
|
86
|
-
## Rails 6.
|
86
|
+
## Rails 6.1.4.1 (August 19, 2021) ##
|
87
87
|
|
88
88
|
* No changes.
|
89
89
|
|
90
90
|
|
91
|
-
## Rails 6.
|
91
|
+
## Rails 6.1.4 (June 24, 2021) ##
|
92
92
|
|
93
93
|
* No changes.
|
94
94
|
|
95
95
|
|
96
|
-
## Rails 6.
|
96
|
+
## Rails 6.1.3.2 (May 05, 2021) ##
|
97
97
|
|
98
98
|
* No changes.
|
99
99
|
|
100
100
|
|
101
|
-
## Rails 6.
|
102
|
-
|
103
|
-
* While using `perform_enqueued_jobs` test helper enqueued jobs must be stored for the later check with
|
104
|
-
`assert_enqueued_with`.
|
105
|
-
|
106
|
-
*Dmitry Polushkin*
|
107
|
-
|
108
|
-
* Add queue name support to Que adapter
|
109
|
-
|
110
|
-
*Brad Nauta*, *Wojciech Wnętrzak*
|
111
|
-
|
112
|
-
|
113
|
-
## Rails 6.0.2.2 (March 19, 2020) ##
|
101
|
+
## Rails 6.1.3.1 (March 26, 2021) ##
|
114
102
|
|
115
103
|
* No changes.
|
116
104
|
|
117
105
|
|
118
|
-
## Rails 6.
|
106
|
+
## Rails 6.1.3 (February 17, 2021) ##
|
119
107
|
|
120
108
|
* No changes.
|
121
109
|
|
122
110
|
|
123
|
-
## Rails 6.
|
124
|
-
|
125
|
-
* Allow Sidekiq access to the underlying job class.
|
126
|
-
|
127
|
-
By having access to the Active Job class, Sidekiq can get access to any `sidekiq_options` which
|
128
|
-
have been set on that Active Job type and serialize those options into Redis.
|
129
|
-
|
130
|
-
https://github.com/mperham/sidekiq/blob/master/Changes.md#60
|
131
|
-
|
132
|
-
*Mike Perham*
|
133
|
-
|
134
|
-
|
135
|
-
## Rails 6.0.1 (November 5, 2019) ##
|
111
|
+
## Rails 6.1.2.1 (February 10, 2021) ##
|
136
112
|
|
137
113
|
* No changes.
|
138
114
|
|
139
115
|
|
140
|
-
## Rails 6.
|
141
|
-
|
142
|
-
* `assert_enqueued_with` and `assert_performed_with` can now test jobs with relative delay.
|
143
|
-
|
144
|
-
*Vlado Cingel*
|
145
|
-
|
146
|
-
|
147
|
-
## Rails 6.0.0.rc2 (July 22, 2019) ##
|
116
|
+
## Rails 6.1.2 (February 09, 2021) ##
|
148
117
|
|
149
118
|
* No changes.
|
150
119
|
|
151
120
|
|
152
|
-
## Rails 6.
|
121
|
+
## Rails 6.1.1 (January 07, 2021) ##
|
153
122
|
|
154
|
-
*
|
123
|
+
* Make `retry_job` return the job that was created.
|
155
124
|
|
156
|
-
*
|
125
|
+
*Rafael Mendonça França*
|
157
126
|
|
158
|
-
*
|
127
|
+
* Include `ActiveSupport::Testing::Assertions` in `ActiveJob::TestHelpers`.
|
159
128
|
|
160
|
-
*
|
129
|
+
*Mikkel Malmberg*
|
161
130
|
|
162
131
|
|
163
|
-
## Rails 6.
|
164
|
-
|
165
|
-
* No changes.
|
132
|
+
## Rails 6.1.0 (December 09, 2020) ##
|
166
133
|
|
134
|
+
* Recover nano precision when serializing `Time`, `TimeWithZone` and `DateTime` objects.
|
167
135
|
|
168
|
-
|
136
|
+
*Alan Tan*
|
169
137
|
|
170
|
-
*
|
138
|
+
* Deprecate `config.active_job.return_false_on_aborted_enqueue`.
|
171
139
|
|
140
|
+
*Rafael Mendonça França*
|
172
141
|
|
173
|
-
|
142
|
+
* Return `false` when enqueuing a job is aborted.
|
174
143
|
|
175
|
-
*
|
144
|
+
*Rafael Mendonça França*
|
176
145
|
|
177
|
-
|
178
|
-
`
|
179
|
-
|
180
|
-
*Kir Shatrov*
|
181
|
-
|
182
|
-
* Keep executions for each specific declaration
|
183
|
-
|
184
|
-
Each `retry_on` declaration has now its own specific executions counter. Before it was
|
185
|
-
shared between all executions of a job.
|
146
|
+
* While using `perform_enqueued_jobs` test helper enqueued jobs must be stored for the later check with
|
147
|
+
`assert_enqueued_with`.
|
186
148
|
|
187
|
-
*
|
149
|
+
*Dmitry Polushkin*
|
188
150
|
|
189
|
-
*
|
190
|
-
Procs.
|
151
|
+
* `ActiveJob::TestCase#perform_enqueued_jobs` without a block removes performed jobs from the queue.
|
191
152
|
|
192
|
-
|
153
|
+
That way the helper can be called multiple times and not perform a job invocation multiple times.
|
193
154
|
|
194
|
-
|
155
|
+
```ruby
|
156
|
+
def test_jobs
|
157
|
+
HelloJob.perform_later("rafael")
|
158
|
+
perform_enqueued_jobs # only runs with "rafael"
|
159
|
+
HelloJob.perform_later("david")
|
160
|
+
perform_enqueued_jobs # only runs with "david"
|
161
|
+
end
|
162
|
+
```
|
195
163
|
|
196
|
-
|
164
|
+
*Étienne Barrié*
|
197
165
|
|
198
|
-
*
|
199
|
-
`assert_enqueued_with` and `assert_performed_with`
|
166
|
+
* `ActiveJob::TestCase#perform_enqueued_jobs` will no longer perform retries:
|
200
167
|
|
201
|
-
|
168
|
+
When calling `perform_enqueued_jobs` without a block, the adapter will
|
169
|
+
now perform jobs that are **already** in the queue. Jobs that will end up in
|
170
|
+
the queue afterwards won't be performed.
|
202
171
|
|
203
|
-
|
204
|
-
a proc for the `args` argument. This is useful to check if only a subset of arguments
|
205
|
-
matches your expectations.
|
172
|
+
This change only affects `perform_enqueued_jobs` when no block is given.
|
206
173
|
|
207
174
|
*Edouard Chin*
|
208
175
|
|
209
|
-
*
|
210
|
-
|
211
|
-
*Ricardo Díaz*
|
212
|
-
|
213
|
-
* Added `enqueue_retry.active_job`, `retry_stopped.active_job`, and `discard.active_job` hooks.
|
214
|
-
|
215
|
-
*steves*
|
176
|
+
* Add queue name support to Que adapter.
|
216
177
|
|
217
|
-
*
|
178
|
+
*Brad Nauta*, *Wojciech Wnętrzak*
|
218
179
|
|
219
|
-
|
180
|
+
* Don't run `after_enqueue` and `after_perform` callbacks if the callback chain is halted.
|
220
181
|
|
221
|
-
|
222
|
-
|
182
|
+
class MyJob < ApplicationJob
|
183
|
+
before_enqueue { throw(:abort) }
|
184
|
+
after_enqueue { # won't enter here anymore }
|
185
|
+
end
|
223
186
|
|
224
|
-
|
187
|
+
`after_enqueue` and `after_perform` callbacks will no longer run if the callback chain is halted.
|
188
|
+
This behaviour is a breaking change and won't take effect until Rails 7.0.
|
189
|
+
To enable this behaviour in your app right now, you can add in your app's configuration file
|
190
|
+
`config.active_job.skip_after_callbacks_if_terminated = true`.
|
225
191
|
|
226
|
-
*
|
192
|
+
*Edouard Chin*
|
227
193
|
|
228
|
-
|
194
|
+
* Fix enqueuing and performing incorrect logging message.
|
229
195
|
|
230
|
-
|
196
|
+
Jobs will no longer always log "Enqueued MyJob" or "Performed MyJob" when they actually didn't get enqueued/performed.
|
231
197
|
|
232
|
-
|
198
|
+
```ruby
|
199
|
+
class MyJob < ApplicationJob
|
200
|
+
before_enqueue { throw(:abort) }
|
201
|
+
end
|
233
202
|
|
234
|
-
|
203
|
+
MyJob.perform_later # Will no longer log "Enqueued MyJob" since job wasn't even enqueued through adapter.
|
204
|
+
```
|
235
205
|
|
236
|
-
|
206
|
+
A new message will be logged in case a job couldn't be enqueued, either because the callback chain was halted or
|
207
|
+
because an exception happened during enqueuing. (i.e. Redis is down when you try to enqueue your job)
|
237
208
|
|
238
|
-
|
239
|
-
time spent writing to the adapter's IO implementation.
|
209
|
+
*Edouard Chin*
|
240
210
|
|
241
|
-
|
211
|
+
* Add an option to disable logging of the job arguments when enqueuing and executing the job.
|
242
212
|
|
243
|
-
|
213
|
+
class SensitiveJob < ApplicationJob
|
214
|
+
self.log_arguments = false
|
244
215
|
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
MyJob.perform_later(1,2,3)
|
249
|
-
assert_enqueued_with(job: MyJob, args: [1,2,3], queue: 'low')
|
216
|
+
def perform(my_sensitive_argument)
|
217
|
+
end
|
218
|
+
end
|
250
219
|
|
251
|
-
|
252
|
-
|
253
|
-
end
|
254
|
-
```
|
220
|
+
When dealing with sensitive arguments as password and tokens it is now possible to configure the job
|
221
|
+
to not put the sensitive argument in the logs.
|
255
222
|
|
256
|
-
*
|
223
|
+
*Rafael Mendonça França*
|
257
224
|
|
258
|
-
*
|
225
|
+
* Changes in `queue_name_prefix` of a job no longer affects all other jobs.
|
259
226
|
|
260
|
-
|
227
|
+
Fixes #37084.
|
261
228
|
|
262
|
-
*
|
229
|
+
*Lucas Mansur*
|
263
230
|
|
264
|
-
|
231
|
+
* Allow `Class` and `Module` instances to be serialized.
|
265
232
|
|
266
|
-
*
|
233
|
+
*Kevin Deisz*
|
267
234
|
|
268
|
-
*
|
235
|
+
* Log potential matches in `assert_enqueued_with` and `assert_performed_with`.
|
269
236
|
|
270
|
-
|
271
|
-
gem development was stopped in 2014 and maintainers have
|
272
|
-
confirmed its demise. See issue #32273
|
237
|
+
*Gareth du Plooy*
|
273
238
|
|
274
|
-
|
239
|
+
* Add `at` argument to the `perform_enqueued_jobs` test helper.
|
275
240
|
|
276
|
-
*
|
241
|
+
*John Crepezzi*, *Eileen Uchitelle*
|
277
242
|
|
278
|
-
|
279
|
-
enqueued and then restore when the job is executed in same way
|
280
|
-
that the current locale is recorded and restored.
|
243
|
+
* `assert_enqueued_with` and `assert_performed_with` can now test jobs with relative delay.
|
281
244
|
|
282
|
-
*
|
245
|
+
*Vlado Cingel*
|
283
246
|
|
284
|
-
*
|
247
|
+
* Add jitter to `ActiveJob::Exceptions.retry_on`.
|
285
248
|
|
286
|
-
|
249
|
+
`ActiveJob::Exceptions.retry_on` now uses a random amount of jitter in order to
|
250
|
+
prevent the [thundering herd effect](https://en.wikipedia.org/wiki/Thundering_herd_problem). Defaults to
|
251
|
+
15% (represented as 0.15) but overridable via the `:jitter` option when using `retry_on`.
|
252
|
+
Jitter is applied when an `Integer`, `ActiveSupport::Duration` or `:exponentially_longer`, is passed to the `wait` argument in `retry_on`.
|
287
253
|
|
288
|
-
|
254
|
+
```ruby
|
255
|
+
retry_on(MyError, wait: :exponentially_longer, jitter: 0.30)
|
256
|
+
```
|
289
257
|
|
290
|
-
*
|
258
|
+
*Anthony Ross*
|
291
259
|
|
292
260
|
|
293
|
-
Please check [
|
261
|
+
Please check [6-0-stable](https://github.com/rails/rails/blob/6-0-stable/activejob/CHANGELOG.md) for previous changes.
|
data/MIT-LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2014-
|
1
|
+
Copyright (c) 2014-2022 David Heinemeier Hansson
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
a copy of this software and associated documentation files (the
|
@@ -18,4 +18,3 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
18
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
19
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
20
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
-
|
data/README.md
CHANGED
@@ -95,9 +95,6 @@ their gem, or as a stand-alone gem. For discussion about this see the
|
|
95
95
|
following PRs: [23311](https://github.com/rails/rails/issues/23311#issuecomment-176275718),
|
96
96
|
[21406](https://github.com/rails/rails/pull/21406#issuecomment-138813484), and [#32285](https://github.com/rails/rails/pull/32285).
|
97
97
|
|
98
|
-
## Auxiliary gems
|
99
|
-
|
100
|
-
* [activejob-stats](https://github.com/seuros/activejob-stats)
|
101
98
|
|
102
99
|
## Download and installation
|
103
100
|
|
@@ -111,6 +108,7 @@ Source code can be downloaded as part of the Rails project on GitHub:
|
|
111
108
|
|
112
109
|
* https://github.com/rails/rails/tree/main/activejob
|
113
110
|
|
111
|
+
|
114
112
|
## License
|
115
113
|
|
116
114
|
Active Job is released under the MIT license:
|
data/lib/active_job/base.rb
CHANGED
@@ -8,7 +8,9 @@ require "active_job/enqueuing"
|
|
8
8
|
require "active_job/execution"
|
9
9
|
require "active_job/callbacks"
|
10
10
|
require "active_job/exceptions"
|
11
|
+
require "active_job/log_subscriber"
|
11
12
|
require "active_job/logging"
|
13
|
+
require "active_job/instrumentation"
|
12
14
|
require "active_job/timezones"
|
13
15
|
require "active_job/translation"
|
14
16
|
|
@@ -68,6 +70,7 @@ module ActiveJob #:nodoc:
|
|
68
70
|
include Callbacks
|
69
71
|
include Exceptions
|
70
72
|
include Logging
|
73
|
+
include Instrumentation
|
71
74
|
include Timezones
|
72
75
|
include Translation
|
73
76
|
|
data/lib/active_job/callbacks.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "active_support/callbacks"
|
4
|
+
require "active_support/core_ext/object/with_options"
|
5
|
+
require "active_support/core_ext/module/attribute_accessors"
|
4
6
|
|
5
7
|
module ActiveJob
|
6
8
|
# = Active Job Callbacks
|
@@ -27,16 +29,25 @@ module ActiveJob
|
|
27
29
|
end
|
28
30
|
|
29
31
|
included do
|
30
|
-
|
31
|
-
|
32
|
+
class_attribute :return_false_on_aborted_enqueue, instance_accessor: false, instance_predicate: false, default: false
|
33
|
+
singleton_class.deprecate :return_false_on_aborted_enqueue, :return_false_on_aborted_enqueue=
|
34
|
+
cattr_accessor :skip_after_callbacks_if_terminated, instance_accessor: false, default: false
|
32
35
|
|
33
|
-
|
34
|
-
|
36
|
+
with_options(skip_after_callbacks_if_terminated: skip_after_callbacks_if_terminated) do
|
37
|
+
define_callbacks :perform
|
38
|
+
define_callbacks :enqueue
|
39
|
+
end
|
35
40
|
end
|
36
41
|
|
37
42
|
# These methods will be included into any Active Job object, adding
|
38
43
|
# callbacks for +perform+ and +enqueue+ methods.
|
39
44
|
module ClassMethods
|
45
|
+
def inherited(klass)
|
46
|
+
klass.get_callbacks(:enqueue).config[:skip_after_callbacks_if_terminated] = skip_after_callbacks_if_terminated
|
47
|
+
klass.get_callbacks(:perform).config[:skip_after_callbacks_if_terminated] = skip_after_callbacks_if_terminated
|
48
|
+
super
|
49
|
+
end
|
50
|
+
|
40
51
|
# Defines a callback that will get called right before the
|
41
52
|
# job's perform method is executed.
|
42
53
|
#
|
@@ -91,6 +102,19 @@ module ActiveJob
|
|
91
102
|
# end
|
92
103
|
# end
|
93
104
|
#
|
105
|
+
# You can access the return value of the job only if the execution wasn't halted.
|
106
|
+
#
|
107
|
+
# class VideoProcessJob < ActiveJob::Base
|
108
|
+
# around_perform do |job, block|
|
109
|
+
# value = block.call
|
110
|
+
# puts value # => "Hello World!"
|
111
|
+
# end
|
112
|
+
#
|
113
|
+
# def perform
|
114
|
+
# "Hello World!"
|
115
|
+
# end
|
116
|
+
# end
|
117
|
+
#
|
94
118
|
def around_perform(*filters, &blk)
|
95
119
|
set_callback(:perform, :around, *filters, &blk)
|
96
120
|
end
|
@@ -154,5 +178,21 @@ module ActiveJob
|
|
154
178
|
set_callback(:enqueue, :around, *filters, &blk)
|
155
179
|
end
|
156
180
|
end
|
181
|
+
|
182
|
+
private
|
183
|
+
def halted_callback_hook(_filter, name) # :nodoc:
|
184
|
+
return super unless %i(enqueue perform).include?(name.to_sym)
|
185
|
+
callbacks = public_send("_#{name}_callbacks")
|
186
|
+
|
187
|
+
if !self.class.skip_after_callbacks_if_terminated && callbacks.any? { |c| c.kind == :after }
|
188
|
+
ActiveSupport::Deprecation.warn(<<~EOM)
|
189
|
+
In Rails 7.0, `after_enqueue`/`after_perform` callbacks no longer run if `before_enqueue`/`before_perform` respectively halts with `throw :abort`.
|
190
|
+
To enable this behavior, uncomment the `config.active_job.skip_after_callbacks_if_terminated` config
|
191
|
+
in the new 6.1 framework defaults initializer.
|
192
|
+
EOM
|
193
|
+
end
|
194
|
+
|
195
|
+
super
|
196
|
+
end
|
157
197
|
end
|
158
198
|
end
|
data/lib/active_job/core.rb
CHANGED
@@ -85,7 +85,7 @@ module ActiveJob
|
|
85
85
|
@priority = self.class.priority
|
86
86
|
@executions = 0
|
87
87
|
@exception_executions = {}
|
88
|
-
@timezone = Time.zone
|
88
|
+
@timezone = Time.zone&.name
|
89
89
|
end
|
90
90
|
ruby2_keywords(:initialize) if respond_to?(:ruby2_keywords, true)
|
91
91
|
|
@@ -142,7 +142,7 @@ module ActiveJob
|
|
142
142
|
self.executions = job_data["executions"]
|
143
143
|
self.exception_executions = job_data["exception_executions"]
|
144
144
|
self.locale = job_data["locale"] || I18n.locale.to_s
|
145
|
-
self.timezone = job_data["timezone"] || Time.zone
|
145
|
+
self.timezone = job_data["timezone"] || Time.zone&.name
|
146
146
|
self.enqueued_at = job_data["enqueued_at"]
|
147
147
|
end
|
148
148
|
|
data/lib/active_job/enqueuing.rb
CHANGED
@@ -54,9 +54,9 @@ module ActiveJob
|
|
54
54
|
|
55
55
|
run_callbacks :enqueue do
|
56
56
|
if scheduled_at
|
57
|
-
|
57
|
+
queue_adapter.enqueue_at self, scheduled_at
|
58
58
|
else
|
59
|
-
|
59
|
+
queue_adapter.enqueue self
|
60
60
|
end
|
61
61
|
|
62
62
|
successfully_enqueued = true
|
@@ -65,17 +65,7 @@ module ActiveJob
|
|
65
65
|
if successfully_enqueued
|
66
66
|
self
|
67
67
|
else
|
68
|
-
|
69
|
-
false
|
70
|
-
else
|
71
|
-
ActiveSupport::Deprecation.warn(
|
72
|
-
"Rails 6.1 will return false when the enqueuing is aborted. Make sure your code doesn't depend on it" \
|
73
|
-
" returning the instance of the job and set `config.active_job.return_false_on_aborted_enqueue = true`" \
|
74
|
-
" to remove the deprecations."
|
75
|
-
)
|
76
|
-
|
77
|
-
self
|
78
|
-
end
|
68
|
+
false
|
79
69
|
end
|
80
70
|
end
|
81
71
|
end
|