activejob 7.0.8 → 7.2.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 -214
- data/MIT-LICENSE +1 -1
- data/README.md +2 -2
- data/lib/active_job/arguments.rb +18 -32
- data/lib/active_job/base.rb +1 -1
- data/lib/active_job/callbacks.rb +3 -8
- data/lib/active_job/configured_job.rb +4 -0
- data/lib/active_job/core.rb +11 -6
- data/lib/active_job/deprecator.rb +7 -0
- data/lib/active_job/enqueue_after_transaction_commit.rb +28 -0
- data/lib/active_job/enqueuing.rb +71 -12
- data/lib/active_job/exceptions.rb +44 -7
- data/lib/active_job/execution.rb +5 -2
- data/lib/active_job/gem_version.rb +3 -3
- data/lib/active_job/instrumentation.rb +18 -10
- data/lib/active_job/log_subscriber.rb +80 -8
- data/lib/active_job/logging.rb +16 -2
- data/lib/active_job/queue_adapter.rb +18 -6
- data/lib/active_job/queue_adapters/abstract_adapter.rb +27 -0
- data/lib/active_job/queue_adapters/async_adapter.rb +3 -3
- data/lib/active_job/queue_adapters/backburner_adapter.rb +8 -4
- data/lib/active_job/queue_adapters/delayed_job_adapter.rb +10 -2
- data/lib/active_job/queue_adapters/inline_adapter.rb +6 -2
- data/lib/active_job/queue_adapters/queue_classic_adapter.rb +13 -5
- data/lib/active_job/queue_adapters/resque_adapter.rb +2 -2
- data/lib/active_job/queue_adapters/sidekiq_adapter.rb +43 -15
- data/lib/active_job/queue_adapters/sneakers_adapter.rb +2 -2
- data/lib/active_job/queue_adapters/sucker_punch_adapter.rb +4 -4
- data/lib/active_job/queue_adapters/test_adapter.rb +13 -5
- data/lib/active_job/queue_adapters.rb +9 -7
- data/lib/active_job/queue_priority.rb +18 -1
- data/lib/active_job/railtie.rb +38 -7
- data/lib/active_job/serializers/big_decimal_serializer.rb +22 -0
- data/lib/active_job/serializers/duration_serializer.rb +4 -2
- data/lib/active_job/serializers/object_serializer.rb +2 -0
- data/lib/active_job/serializers/time_with_zone_serializer.rb +11 -2
- data/lib/active_job/serializers.rb +7 -3
- data/lib/active_job/test_helper.rb +60 -19
- data/lib/active_job/version.rb +1 -1
- data/lib/active_job.rb +34 -4
- data/lib/rails/generators/job/USAGE +19 -0
- data/lib/rails/generators/job/job_generator.rb +6 -2
- data/lib/rails/generators/job/templates/job.rb.tt +1 -1
- metadata +14 -10
- data/lib/active_job/queue_adapters/que_adapter.rb +0 -61
@@ -0,0 +1,19 @@
|
|
1
|
+
Description:
|
2
|
+
Generates a new job. Pass the job name, either CamelCased or
|
3
|
+
under_scored, with or without the job postfix.
|
4
|
+
|
5
|
+
Examples:
|
6
|
+
`bin/rails generate job checkout`
|
7
|
+
|
8
|
+
Creates the following files:
|
9
|
+
|
10
|
+
Job: app/jobs/checkout_job.rb
|
11
|
+
Test: test/jobs/checkout_job_test.rb
|
12
|
+
|
13
|
+
`bin/rails generate job send_sms --queue=sms`
|
14
|
+
|
15
|
+
Creates a job and test with a custom sms queue.
|
16
|
+
|
17
|
+
`bin/rails generate job process_payment --parent=payment_job`
|
18
|
+
|
19
|
+
Creates a job and test with a `PaymentJob` parent class.
|
@@ -5,10 +5,10 @@ require "rails/generators/named_base"
|
|
5
5
|
module Rails # :nodoc:
|
6
6
|
module Generators # :nodoc:
|
7
7
|
class JobGenerator < Rails::Generators::NamedBase # :nodoc:
|
8
|
-
desc "This generator creates an active job file at app/jobs"
|
9
|
-
|
10
8
|
class_option :queue, type: :string, default: "default", desc: "The queue name for the generated job"
|
11
9
|
|
10
|
+
class_option :parent, type: :string, default: "ApplicationJob", desc: "The parent class for the generated job"
|
11
|
+
|
12
12
|
check_class_collision suffix: "Job"
|
13
13
|
|
14
14
|
hook_for :test_framework
|
@@ -28,6 +28,10 @@ module Rails # :nodoc:
|
|
28
28
|
end
|
29
29
|
|
30
30
|
private
|
31
|
+
def parent_class_name
|
32
|
+
options[:parent]
|
33
|
+
end
|
34
|
+
|
31
35
|
def file_name
|
32
36
|
@_file_name ||= super.sub(/_job\z/i, "")
|
33
37
|
end
|
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
|
4
|
+
version: 7.2.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:
|
11
|
+
date: 2024-08-09 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
|
19
|
+
version: 7.2.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
|
26
|
+
version: 7.2.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: globalid
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,6 +53,8 @@ files:
|
|
53
53
|
- lib/active_job/callbacks.rb
|
54
54
|
- lib/active_job/configured_job.rb
|
55
55
|
- lib/active_job/core.rb
|
56
|
+
- lib/active_job/deprecator.rb
|
57
|
+
- lib/active_job/enqueue_after_transaction_commit.rb
|
56
58
|
- lib/active_job/enqueuing.rb
|
57
59
|
- lib/active_job/exceptions.rb
|
58
60
|
- lib/active_job/execution.rb
|
@@ -62,11 +64,11 @@ files:
|
|
62
64
|
- lib/active_job/logging.rb
|
63
65
|
- lib/active_job/queue_adapter.rb
|
64
66
|
- lib/active_job/queue_adapters.rb
|
67
|
+
- lib/active_job/queue_adapters/abstract_adapter.rb
|
65
68
|
- lib/active_job/queue_adapters/async_adapter.rb
|
66
69
|
- lib/active_job/queue_adapters/backburner_adapter.rb
|
67
70
|
- lib/active_job/queue_adapters/delayed_job_adapter.rb
|
68
71
|
- lib/active_job/queue_adapters/inline_adapter.rb
|
69
|
-
- lib/active_job/queue_adapters/que_adapter.rb
|
70
72
|
- lib/active_job/queue_adapters/queue_classic_adapter.rb
|
71
73
|
- lib/active_job/queue_adapters/resque_adapter.rb
|
72
74
|
- lib/active_job/queue_adapters/sidekiq_adapter.rb
|
@@ -77,6 +79,7 @@ files:
|
|
77
79
|
- lib/active_job/queue_priority.rb
|
78
80
|
- lib/active_job/railtie.rb
|
79
81
|
- lib/active_job/serializers.rb
|
82
|
+
- lib/active_job/serializers/big_decimal_serializer.rb
|
80
83
|
- lib/active_job/serializers/date_serializer.rb
|
81
84
|
- lib/active_job/serializers/date_time_serializer.rb
|
82
85
|
- lib/active_job/serializers/duration_serializer.rb
|
@@ -92,6 +95,7 @@ files:
|
|
92
95
|
- lib/active_job/timezones.rb
|
93
96
|
- lib/active_job/translation.rb
|
94
97
|
- lib/active_job/version.rb
|
98
|
+
- lib/rails/generators/job/USAGE
|
95
99
|
- lib/rails/generators/job/job_generator.rb
|
96
100
|
- lib/rails/generators/job/templates/application_job.rb.tt
|
97
101
|
- lib/rails/generators/job/templates/job.rb.tt
|
@@ -100,10 +104,10 @@ licenses:
|
|
100
104
|
- MIT
|
101
105
|
metadata:
|
102
106
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
103
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.0
|
104
|
-
documentation_uri: https://api.rubyonrails.org/v7.0
|
107
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.2.0/activejob/CHANGELOG.md
|
108
|
+
documentation_uri: https://api.rubyonrails.org/v7.2.0/
|
105
109
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
106
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.0
|
110
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.2.0/activejob
|
107
111
|
rubygems_mfa_required: 'true'
|
108
112
|
post_install_message:
|
109
113
|
rdoc_options: []
|
@@ -113,14 +117,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
117
|
requirements:
|
114
118
|
- - ">="
|
115
119
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
120
|
+
version: 3.1.0
|
117
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
122
|
requirements:
|
119
123
|
- - ">="
|
120
124
|
- !ruby/object:Gem::Version
|
121
125
|
version: '0'
|
122
126
|
requirements: []
|
123
|
-
rubygems_version: 3.
|
127
|
+
rubygems_version: 3.5.11
|
124
128
|
signing_key:
|
125
129
|
specification_version: 4
|
126
130
|
summary: Job framework with pluggable queues.
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "que"
|
4
|
-
|
5
|
-
module ActiveJob
|
6
|
-
module QueueAdapters
|
7
|
-
# == Que adapter for Active Job
|
8
|
-
#
|
9
|
-
# Que is a high-performance alternative to DelayedJob or QueueClassic that
|
10
|
-
# improves the reliability of your application by protecting your jobs with
|
11
|
-
# the same ACID guarantees as the rest of your data. Que is a queue for
|
12
|
-
# Ruby and PostgreSQL that manages jobs using advisory locks.
|
13
|
-
#
|
14
|
-
# Read more about Que {here}[https://github.com/chanks/que].
|
15
|
-
#
|
16
|
-
# To use Que set the queue_adapter config to +:que+.
|
17
|
-
#
|
18
|
-
# Rails.application.config.active_job.queue_adapter = :que
|
19
|
-
class QueAdapter
|
20
|
-
def enqueue(job) # :nodoc:
|
21
|
-
job_options = { priority: job.priority, queue: job.queue_name }
|
22
|
-
que_job = nil
|
23
|
-
|
24
|
-
if require_job_options_kwarg?
|
25
|
-
que_job = JobWrapper.enqueue job.serialize, job_options: job_options
|
26
|
-
else
|
27
|
-
que_job = JobWrapper.enqueue job.serialize, **job_options
|
28
|
-
end
|
29
|
-
|
30
|
-
job.provider_job_id = que_job.attrs["job_id"]
|
31
|
-
que_job
|
32
|
-
end
|
33
|
-
|
34
|
-
def enqueue_at(job, timestamp) # :nodoc:
|
35
|
-
job_options = { priority: job.priority, queue: job.queue_name, run_at: Time.at(timestamp) }
|
36
|
-
que_job = nil
|
37
|
-
|
38
|
-
if require_job_options_kwarg?
|
39
|
-
que_job = JobWrapper.enqueue job.serialize, job_options: job_options
|
40
|
-
else
|
41
|
-
que_job = JobWrapper.enqueue job.serialize, **job_options
|
42
|
-
end
|
43
|
-
|
44
|
-
job.provider_job_id = que_job.attrs["job_id"]
|
45
|
-
que_job
|
46
|
-
end
|
47
|
-
|
48
|
-
private
|
49
|
-
def require_job_options_kwarg?
|
50
|
-
@require_job_options_kwarg ||=
|
51
|
-
JobWrapper.method(:enqueue).parameters.any? { |ptype, pname| ptype == :key && pname == :job_options }
|
52
|
-
end
|
53
|
-
|
54
|
-
class JobWrapper < Que::Job # :nodoc:
|
55
|
-
def run(job_data)
|
56
|
-
Base.execute job_data
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|