activejob 8.1.3.1 → 8.1.4

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
  SHA256:
3
- metadata.gz: 53c10d0e96b9213898250e8af05c1e8e1c1cb255a4884c677dd39191908f2559
4
- data.tar.gz: e6224728b15767fad4449d2441887e66c007baa2e81a4a379372434f44b391d8
3
+ metadata.gz: 1503f488f2a32e2cd39b53994c48b0dae9133edc783d1013d7e9f5e852531f56
4
+ data.tar.gz: 613855b5cf6cee256f5184d9ad79e3f700bace4e9c7b47f5af6af4c239844c92
5
5
  SHA512:
6
- metadata.gz: 9313a2157f03086ee8aa94c1128e84d1441f56e4a3e5db394cea01f6284b561612baae9a65a69dc2294b781d533618385322238a39b11242cd7dcecd7591e296
7
- data.tar.gz: '08283f38bf9788bfe492abc1cfa1cd8ccf0b26edca7581e3129912fe97f58e3e2c90511f94cf1297db363285fb55c4c560241ab4960e9b1313b9a3d72bfed15f'
6
+ metadata.gz: 8b1ad7c7ae959aec8c0b84d8e2a6e5c86eac719de5545804a5db571823b0522289430ab298596ceedb0cc8c048f0a498fa0ae1302a4403ebb87254f51a317124
7
+ data.tar.gz: 427def36a0c8c5f0d091e3ad07926657ae89dbf0066401b39e4b433e8b0b9de65ac9fd19288a05bd65e3320336f749dd55b31226ff8beeffd4af1a9c16f7c49d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ ## Rails 8.1.4 (September 24, 2026) ##
2
+
3
+ * Fix `retry_job` to preserve `wait_until`, `queue`, and `priority` options when
4
+ `enqueue_after_transaction_commit` defers the enqueue.
5
+
6
+ *Said Kaldybaev*
7
+
8
+ * Clear a stale `enqueue_error` when `perform_all_later` successfully re-enqueues a job.
9
+
10
+ *Kenta Ishizaki*
11
+
12
+ * Clear `enqueue_error` when a job is successfully re-enqueued via `enqueue`.
13
+
14
+ *Kenta Ishizaki*
15
+
16
+ * Fix `resume_job` not receiving the exception when resuming a continuation after
17
+ an error, causing `exception_executions` to not be recorded correctly.
18
+
19
+ *Kenta Ishizaki*
20
+
21
+ * Fix `ActiveJob.perform_all_later` not being available until `ActiveJob::Enqueuing`
22
+ was autoloaded.
23
+
24
+ *fatkodima*
25
+
26
+
1
27
  ## Rails 8.1.3.1 (July 29, 2026) ##
2
28
 
3
29
  * No changes.
@@ -82,7 +82,7 @@ module ActiveJob
82
82
  raise
83
83
  rescue StandardError => e
84
84
  if resume_errors_after_advancing? && continuation.advanced?
85
- resume_job(exception: e)
85
+ resume_job(e)
86
86
  else
87
87
  raise
88
88
  end
@@ -48,10 +48,10 @@ module ActiveJob
48
48
  # cattr_accessor :items, default: []
49
49
  #
50
50
  # def perform
51
- # step :step_one { items << 1 }
52
- # step :step_two { items << 2 }
53
- # step :step_three { items << 3 }
54
- # step :step_four { items << 4 }
51
+ # step(:step_one) { items << 1 }
52
+ # step(:step_two) { items << 2 }
53
+ # step(:step_three) { items << 3 }
54
+ # step(:step_four) { items << 4 }
55
55
  # end
56
56
  # end
57
57
  #
@@ -206,7 +206,7 @@ module ActiveJob
206
206
  class UnadvanceableCursorError < Error; end
207
207
 
208
208
  # Raised when a job has reached its limit of the number of resumes.
209
- # The limit is defined by the +max_resumes+ class attribute.
209
+ # The limit is defined by the +max_resumptions+ class attribute.
210
210
  class ResumeLimitError < Error; end
211
211
 
212
212
  include Validation
@@ -25,9 +25,20 @@ module ActiveJob
25
25
  def raw_enqueue
26
26
  if self.class.enqueue_after_transaction_commit
27
27
  self.successfully_enqueued = true
28
+ deferred_scheduled_at = scheduled_at
29
+ deferred_queue_name = queue_name
30
+ deferred_priority = priority
28
31
  ActiveRecord.after_all_transactions_commit do
32
+ previous_scheduled_at, previous_queue_name, previous_priority = scheduled_at, queue_name, priority
33
+ self.scheduled_at = deferred_scheduled_at
34
+ self.queue_name = deferred_queue_name
35
+ self.priority = deferred_priority
29
36
  self.successfully_enqueued = false
30
37
  super
38
+ ensure
39
+ self.scheduled_at = previous_scheduled_at
40
+ self.queue_name = previous_queue_name
41
+ self.priority = previous_priority
31
42
  end
32
43
  self
33
44
  else
@@ -7,36 +7,6 @@ module ActiveJob
7
7
  # why the adapter was unexpectedly unable to enqueue a job.
8
8
  class EnqueueError < StandardError; end
9
9
 
10
- class << self
11
- # Push many jobs onto the queue at once without running enqueue callbacks.
12
- # Queue adapters may communicate the enqueue status of each job by setting
13
- # successfully_enqueued and/or enqueue_error on the passed-in job instances.
14
- def perform_all_later(*jobs)
15
- jobs.flatten!
16
- jobs.group_by(&:queue_adapter).each do |queue_adapter, adapter_jobs|
17
- instrument_enqueue_all(queue_adapter, adapter_jobs) do
18
- if queue_adapter.respond_to?(:enqueue_all)
19
- queue_adapter.enqueue_all(adapter_jobs)
20
- else
21
- adapter_jobs.each do |job|
22
- job.successfully_enqueued = false
23
- if job.scheduled_at
24
- queue_adapter.enqueue_at(job, job.scheduled_at.to_f)
25
- else
26
- queue_adapter.enqueue(job)
27
- end
28
- job.successfully_enqueued = true
29
- rescue EnqueueError => e
30
- job.enqueue_error = e
31
- end
32
- adapter_jobs.count(&:successfully_enqueued?)
33
- end
34
- end
35
- end
36
- nil
37
- end
38
- end
39
-
40
10
  module Enqueuing
41
11
  extend ActiveSupport::Concern
42
12
 
@@ -112,6 +82,7 @@ module ActiveJob
112
82
  def enqueue(options = {})
113
83
  set(options)
114
84
  self.successfully_enqueued = false
85
+ self.enqueue_error = nil
115
86
 
116
87
  raw_enqueue
117
88
 
@@ -9,8 +9,8 @@ module ActiveJob
9
9
  module VERSION
10
10
  MAJOR = 8
11
11
  MINOR = 1
12
- TINY = 3
13
- PRE = "1"
12
+ TINY = 4
13
+ PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
data/lib/active_job.rb CHANGED
@@ -59,4 +59,33 @@ module ActiveJob
59
59
  # their relevant enqueue log lines. Defaults to false.
60
60
  singleton_class.attr_accessor :verbose_enqueue_logs
61
61
  self.verbose_enqueue_logs = false
62
+
63
+ # Push many jobs onto the queue at once without running enqueue callbacks.
64
+ # Queue adapters may communicate the enqueue status of each job by setting
65
+ # successfully_enqueued and/or enqueue_error on the passed-in job instances.
66
+ def self.perform_all_later(*jobs)
67
+ jobs.flatten!
68
+ jobs.group_by(&:queue_adapter).each do |queue_adapter, adapter_jobs|
69
+ instrument_enqueue_all(queue_adapter, adapter_jobs) do
70
+ if queue_adapter.respond_to?(:enqueue_all)
71
+ queue_adapter.enqueue_all(adapter_jobs)
72
+ else
73
+ adapter_jobs.each do |job|
74
+ job.successfully_enqueued = false
75
+ job.enqueue_error = nil
76
+ if job.scheduled_at
77
+ queue_adapter.enqueue_at(job, job.scheduled_at.to_f)
78
+ else
79
+ queue_adapter.enqueue(job)
80
+ end
81
+ job.successfully_enqueued = true
82
+ rescue EnqueueError => e
83
+ job.enqueue_error = e
84
+ end
85
+ adapter_jobs.count(&:successfully_enqueued?)
86
+ end
87
+ end
88
+ end
89
+ nil
90
+ end
62
91
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activejob
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.1.3.1
4
+ version: 8.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 8.1.3.1
18
+ version: 8.1.4
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 8.1.3.1
25
+ version: 8.1.4
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: globalid
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -108,10 +108,10 @@ licenses:
108
108
  - MIT
109
109
  metadata:
110
110
  bug_tracker_uri: https://github.com/rails/rails/issues
111
- changelog_uri: https://github.com/rails/rails/blob/v8.1.3.1/activejob/CHANGELOG.md
112
- documentation_uri: https://api.rubyonrails.org/v8.1.3.1/
111
+ changelog_uri: https://github.com/rails/rails/blob/v8.1.4/activejob/CHANGELOG.md
112
+ documentation_uri: https://api.rubyonrails.org/v8.1.4/
113
113
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
114
- source_code_uri: https://github.com/rails/rails/tree/v8.1.3.1/activejob
114
+ source_code_uri: https://github.com/rails/rails/tree/v8.1.4/activejob
115
115
  rubygems_mfa_required: 'true'
116
116
  rdoc_options: []
117
117
  require_paths:
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  - !ruby/object:Gem::Version
128
128
  version: '0'
129
129
  requirements: []
130
- rubygems_version: 4.0.16
130
+ rubygems_version: 4.0.20
131
131
  specification_version: 4
132
132
  summary: Job framework with pluggable queues.
133
133
  test_files: []