activejob 7.0.0.alpha2 → 7.0.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 +4 -4
- data/CHANGELOG.md +35 -0
- data/lib/active_job/callbacks.rb +3 -28
- data/lib/active_job/configured_job.rb +1 -1
- data/lib/active_job/core.rb +10 -0
- data/lib/active_job/enqueuing.rb +1 -4
- data/lib/active_job/execution.rb +1 -0
- data/lib/active_job/gem_version.rb +1 -1
- data/lib/active_job/railtie.rb +1 -5
- data/lib/active_job/serializers/module_serializer.rb +1 -0
- data/lib/active_job/test_helper.rb +30 -6
- metadata +11 -11
- data/lib/active_job/query_tags.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ae2d6cd0db3d7b8f537207fc2a1ca24c367a99d342f5df41f528a36d78b8bdc
|
4
|
+
data.tar.gz: f4fa7e7a47dbfc76f27efb80784da27ea752e7c439ced3cda38be6dd9433ad9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f69f0725c4795278cbec6122722ff8646855a27590c32b8fe01bf2c2d11b7f3d5ebb55480dc22328bd71ed101402c6a5d7b7566545899b97faf4ea67b099821
|
7
|
+
data.tar.gz: d2d1bda340ca28b512243d1feae203482a4f965746723329d135fedf6b0a100eb658cb9b8108e12d57c04a494b419cb3d4843c9c19a9265ee83af3082520873b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,38 @@
|
|
1
|
+
## Rails 7.0.0 (December 15, 2021) ##
|
2
|
+
|
3
|
+
* No changes.
|
4
|
+
|
5
|
+
|
6
|
+
## Rails 7.0.0.rc3 (December 14, 2021) ##
|
7
|
+
|
8
|
+
* No changes.
|
9
|
+
|
10
|
+
|
11
|
+
## Rails 7.0.0.rc2 (December 14, 2021) ##
|
12
|
+
|
13
|
+
* No changes.
|
14
|
+
|
15
|
+
## Rails 7.0.0.rc1 (December 06, 2021) ##
|
16
|
+
|
17
|
+
* Remove deprecated `:return_false_on_aborted_enqueue` option.
|
18
|
+
|
19
|
+
*Rafael Mendonça França*
|
20
|
+
|
21
|
+
* Deprecated `Rails.config.active_job.skip_after_callbacks_if_terminated`.
|
22
|
+
|
23
|
+
*Rafael Mendonça França*
|
24
|
+
|
25
|
+
* Removed deprecated behavior that was not halting `after_enqueue`/`after_perform` callbacks when a
|
26
|
+
previous callback was halted with `throw :abort`.
|
27
|
+
|
28
|
+
*Rafael Mendonça França*
|
29
|
+
|
30
|
+
* Raise an `SerializationError` in `Serializer::ModuleSerializer`
|
31
|
+
if the module name is not present.
|
32
|
+
|
33
|
+
*Veerpal Brar*
|
34
|
+
|
35
|
+
|
1
36
|
## Rails 7.0.0.alpha2 (September 15, 2021) ##
|
2
37
|
|
3
38
|
* No changes.
|
data/lib/active_job/callbacks.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "active_support/callbacks"
|
4
|
-
require "active_support/core_ext/object/with_options"
|
5
4
|
require "active_support/core_ext/module/attribute_accessors"
|
6
5
|
|
7
6
|
module ActiveJob
|
@@ -30,24 +29,16 @@ module ActiveJob
|
|
30
29
|
|
31
30
|
included do
|
32
31
|
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
32
|
cattr_accessor :skip_after_callbacks_if_terminated, instance_accessor: false, default: false
|
33
|
+
singleton_class.deprecate :skip_after_callbacks_if_terminated, :skip_after_callbacks_if_terminated=
|
35
34
|
|
36
|
-
|
37
|
-
|
38
|
-
define_callbacks :enqueue
|
39
|
-
end
|
35
|
+
define_callbacks :perform, skip_after_callbacks_if_terminated: true
|
36
|
+
define_callbacks :enqueue, skip_after_callbacks_if_terminated: true
|
40
37
|
end
|
41
38
|
|
42
39
|
# These methods will be included into any Active Job object, adding
|
43
40
|
# callbacks for +perform+ and +enqueue+ methods.
|
44
41
|
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
|
-
|
51
42
|
# Defines a callback that will get called right before the
|
52
43
|
# job's perform method is executed.
|
53
44
|
#
|
@@ -178,21 +169,5 @@ module ActiveJob
|
|
178
169
|
set_callback(:enqueue, :around, *filters, &blk)
|
179
170
|
end
|
180
171
|
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
|
197
172
|
end
|
198
173
|
end
|
data/lib/active_job/core.rb
CHANGED
@@ -156,6 +156,16 @@ module ActiveJob
|
|
156
156
|
self.enqueued_at = job_data["enqueued_at"]
|
157
157
|
end
|
158
158
|
|
159
|
+
# Configures the job with the given options.
|
160
|
+
def set(options = {}) # :nodoc:
|
161
|
+
self.scheduled_at = options[:wait].seconds.from_now.to_f if options[:wait]
|
162
|
+
self.scheduled_at = options[:wait_until].to_f if options[:wait_until]
|
163
|
+
self.queue_name = self.class.queue_name_from_part(options[:queue]) if options[:queue]
|
164
|
+
self.priority = options[:priority].to_i if options[:priority]
|
165
|
+
|
166
|
+
self
|
167
|
+
end
|
168
|
+
|
159
169
|
private
|
160
170
|
def serialize_arguments_if_needed(arguments)
|
161
171
|
if arguments_serialized?
|
data/lib/active_job/enqueuing.rb
CHANGED
@@ -57,10 +57,7 @@ module ActiveJob
|
|
57
57
|
# my_job_instance.enqueue wait_until: Date.tomorrow.midnight
|
58
58
|
# my_job_instance.enqueue priority: 10
|
59
59
|
def enqueue(options = {})
|
60
|
-
|
61
|
-
self.scheduled_at = options[:wait_until].to_f if options[:wait_until]
|
62
|
-
self.queue_name = self.class.queue_name_from_part(options[:queue]) if options[:queue]
|
63
|
-
self.priority = options[:priority].to_i if options[:priority]
|
60
|
+
set(options)
|
64
61
|
self.successfully_enqueued = false
|
65
62
|
|
66
63
|
run_callbacks :enqueue do
|
data/lib/active_job/execution.rb
CHANGED
data/lib/active_job/railtie.rb
CHANGED
@@ -65,12 +65,8 @@ module ActiveJob
|
|
65
65
|
if query_logs_tags_enabled
|
66
66
|
app.config.active_record.query_log_tags << :job
|
67
67
|
|
68
|
-
ActiveSupport.on_load(:active_job) do
|
69
|
-
include ActiveJob::QueryTags
|
70
|
-
end
|
71
|
-
|
72
68
|
ActiveSupport.on_load(:active_record) do
|
73
|
-
ActiveRecord::QueryLogs.taggings[:job] = ->(context) { context[:job].class.name
|
69
|
+
ActiveRecord::QueryLogs.taggings[:job] = ->(context) { context[:job].class.name if context[:job] }
|
74
70
|
end
|
75
71
|
end
|
76
72
|
end
|
@@ -109,7 +109,7 @@ module ActiveJob
|
|
109
109
|
# end
|
110
110
|
# end
|
111
111
|
#
|
112
|
-
# +:only+ and +:except+ options
|
112
|
+
# +:only+ and +:except+ options accept Class, Array of Class or Proc. When passed a Proc,
|
113
113
|
# a hash containing the job's class and it's argument are passed as argument.
|
114
114
|
#
|
115
115
|
# Asserts the number of times a job is enqueued to a specific queue by passing +:queue+ option.
|
@@ -168,7 +168,7 @@ module ActiveJob
|
|
168
168
|
# end
|
169
169
|
# end
|
170
170
|
#
|
171
|
-
# +:only+ and +:except+ options
|
171
|
+
# +:only+ and +:except+ options accept Class, Array of Class or Proc. When passed a Proc,
|
172
172
|
# a hash containing the job's class and it's argument are passed as argument.
|
173
173
|
#
|
174
174
|
# Asserts that no jobs are enqueued to a specific queue by passing +:queue+ option
|
@@ -325,7 +325,7 @@ module ActiveJob
|
|
325
325
|
# end
|
326
326
|
# end
|
327
327
|
#
|
328
|
-
# +:only+ and +:except+ options
|
328
|
+
# +:only+ and +:except+ options accept Class, Array of Class or Proc. When passed a Proc,
|
329
329
|
# an instance of the job will be passed as argument.
|
330
330
|
#
|
331
331
|
# If the +:queue+ option is specified,
|
@@ -417,8 +417,20 @@ module ActiveJob
|
|
417
417
|
end
|
418
418
|
end
|
419
419
|
|
420
|
+
matching_class = potential_matches.select do |enqueued_job|
|
421
|
+
enqueued_job["job_class"] == job.to_s
|
422
|
+
end
|
423
|
+
|
420
424
|
message = +"No enqueued job found with #{expected}"
|
421
|
-
|
425
|
+
if potential_matches.empty?
|
426
|
+
message << "\n\nNo jobs were enqueued"
|
427
|
+
elsif matching_class.empty?
|
428
|
+
message << "\n\nNo jobs of class #{expected[:job]} were enqueued, job classes enqueued: "
|
429
|
+
message << potential_matches.map { |job| job["job_class"] }.join(", ")
|
430
|
+
else
|
431
|
+
message << "\n\nPotential matches: #{matching_class.join("\n")}"
|
432
|
+
end
|
433
|
+
|
422
434
|
assert matching_job, message
|
423
435
|
instantiate_job(matching_job)
|
424
436
|
end
|
@@ -507,8 +519,20 @@ module ActiveJob
|
|
507
519
|
end
|
508
520
|
end
|
509
521
|
|
522
|
+
matching_class = potential_matches.select do |enqueued_job|
|
523
|
+
enqueued_job["job_class"] == job.to_s
|
524
|
+
end
|
525
|
+
|
510
526
|
message = +"No performed job found with #{expected}"
|
511
|
-
|
527
|
+
if potential_matches.empty?
|
528
|
+
message << "\n\nNo jobs were performed"
|
529
|
+
elsif matching_class.empty?
|
530
|
+
message << "\n\nNo jobs of class #{expected[:job]} were performed, job classes performed: "
|
531
|
+
message << potential_matches.map { |job| job["job_class"] }.join(", ")
|
532
|
+
else
|
533
|
+
message << "\n\nPotential matches: #{matching_class.join("\n")}"
|
534
|
+
end
|
535
|
+
|
512
536
|
assert matching_job, message
|
513
537
|
|
514
538
|
instantiate_job(matching_job)
|
@@ -555,7 +579,7 @@ module ActiveJob
|
|
555
579
|
# assert_performed_jobs 1
|
556
580
|
# end
|
557
581
|
#
|
558
|
-
# +:only+ and +:except+ options
|
582
|
+
# +:only+ and +:except+ options accept Class, Array of Class or Proc. When passed a Proc,
|
559
583
|
# an instance of the job will be passed as argument.
|
560
584
|
#
|
561
585
|
# If the +:queue+ option is specified,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activejob
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.0.0
|
4
|
+
version: 7.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 7.0.0
|
19
|
+
version: 7.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 7.0.0
|
26
|
+
version: 7.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: globalid
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -60,7 +60,6 @@ files:
|
|
60
60
|
- lib/active_job/instrumentation.rb
|
61
61
|
- lib/active_job/log_subscriber.rb
|
62
62
|
- lib/active_job/logging.rb
|
63
|
-
- lib/active_job/query_tags.rb
|
64
63
|
- lib/active_job/queue_adapter.rb
|
65
64
|
- lib/active_job/queue_adapters.rb
|
66
65
|
- lib/active_job/queue_adapters/async_adapter.rb
|
@@ -101,10 +100,11 @@ licenses:
|
|
101
100
|
- MIT
|
102
101
|
metadata:
|
103
102
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
104
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.0.0
|
105
|
-
documentation_uri: https://api.rubyonrails.org/v7.0.0
|
103
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.0.0/activejob/CHANGELOG.md
|
104
|
+
documentation_uri: https://api.rubyonrails.org/v7.0.0/
|
106
105
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
107
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.0.0
|
106
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.0.0/activejob
|
107
|
+
rubygems_mfa_required: 'true'
|
108
108
|
post_install_message:
|
109
109
|
rdoc_options: []
|
110
110
|
require_paths:
|
@@ -116,11 +116,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
version: 2.7.0
|
117
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- - "
|
119
|
+
- - ">="
|
120
120
|
- !ruby/object:Gem::Version
|
121
|
-
version:
|
121
|
+
version: '0'
|
122
122
|
requirements: []
|
123
|
-
rubygems_version: 3.
|
123
|
+
rubygems_version: 3.2.32
|
124
124
|
signing_key:
|
125
125
|
specification_version: 4
|
126
126
|
summary: Job framework with pluggable queues.
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ActiveJob
|
4
|
-
module QueryTags # :nodoc:
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
included do
|
8
|
-
around_perform :expose_job_to_query_logs
|
9
|
-
end
|
10
|
-
|
11
|
-
private
|
12
|
-
def expose_job_to_query_logs(&block)
|
13
|
-
ActiveRecord::QueryLogs.set_context(job: self, &block)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|