actionmailer 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: 334a1ede7cffddbfed2e3feb9af9a52601d3a281859fc52a74f593469a6e7d20
4
- data.tar.gz: 43bc2aa6163506a934168a3686b73df78ce4aa49fe9800c5d0ee8b77af936a56
3
+ metadata.gz: 4eb0ba2055f686d9d3dacf6719f7a8b86444101f6fe4e0282abe78c1a17fa573
4
+ data.tar.gz: f4ab7ae370d30d6b5430747abee2567b9ae90a5e71612bde1674ddb6e0abc170
5
5
  SHA512:
6
- metadata.gz: 3e8e617e527a3ce05a1089b5b1db8949f45dfa6be721997e813629b07add484b82ad86e8483a9c34e160774da51c5bd48cfe90c6af0f4c2be2a42b485935eb31
7
- data.tar.gz: 0c07c6742cfa1eab16d7ea978f1e9746b4eb991e8ebab2e13a2ff6b6ddf99d22fcaf75652cf7a0affee22a48e620071c1dea1a54805c028f7eaf010febd96a40
6
+ metadata.gz: cb97990e0249230504ab30725160b2e840f54d7263edfc3c6f1d5fee6cb2683e53332a567d27bc8df7b18d94c2bdce45ffc6089ac00665a4ca9ec0479c181586
7
+ data.tar.gz: 7f1b871144051beba3140c7a9a11b12650c133358314eeaa0b82dc4686e0c3f40a91368db874242f3c9d51249a06bcff5f2a37a9d222271e23ece01ac5008af5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## Rails 8.1.4 (September 24, 2026) ##
2
+
3
+ * Fix `ActionMailer.deliver_all_later` not being available until
4
+ `ActionMailer::MessageDelivery` was autoloaded.
5
+
6
+ *fatkodima*
7
+
8
+ * Fix `ActionMailer::Base.mail` not returning a `MessageDelivery` in Rails 8.1+.
9
+
10
+ *Andrii Furmanets*
11
+
12
+
1
13
  ## Rails 8.1.3.1 (July 29, 2026) ##
2
14
 
3
15
  * No changes.
@@ -607,6 +607,16 @@ module ActionMailer
607
607
  end.to_s
608
608
  end
609
609
 
610
+ def mail(...)
611
+ MessageDelivery.new(self, :mail, ...)
612
+ end
613
+
614
+ def action_methods
615
+ methods = super
616
+ methods.add("mail") if self == ActionMailer::Base
617
+ methods
618
+ end
619
+
610
620
  private
611
621
  def set_payload_for_mail(payload, mail)
612
622
  payload[:mail] = mail.encoded
@@ -9,8 +9,8 @@ module ActionMailer
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
@@ -61,7 +61,7 @@ module ActionMailer
61
61
  # my_text = 'Here is a sample text with more than 40 characters'
62
62
  #
63
63
  # format_paragraph(my_text, 25, 4)
64
- # # => " Here is a sample text with\n more than 40 characters"
64
+ # # => " Here is a sample text\n with more than 40\n characters"
65
65
  def format_paragraph(text, len = 72, indent = 2)
66
66
  sentences = [[]]
67
67
 
@@ -3,38 +3,6 @@
3
3
  require "delegate"
4
4
 
5
5
  module ActionMailer
6
- class << self
7
- # Enqueue many emails at once to be delivered through Active Job.
8
- # When the individual job runs, it will send the email using +deliver_now+.
9
- def deliver_all_later(*deliveries, **options)
10
- _deliver_all_later("deliver_now", *deliveries, **options)
11
- end
12
-
13
- # Enqueue many emails at once to be delivered through Active Job.
14
- # When the individual job runs, it will send the email using +deliver_now!+.
15
- # That means that the message will be sent bypassing checking +perform_deliveries+
16
- # and +raise_delivery_errors+, so use with caution.
17
- def deliver_all_later!(*deliveries, **options)
18
- _deliver_all_later("deliver_now!", *deliveries, **options)
19
- end
20
-
21
- private
22
- def _deliver_all_later(delivery_method, *deliveries, **options)
23
- deliveries = deliveries.first if deliveries.first.is_a?(Array)
24
-
25
- jobs = deliveries.map do |delivery|
26
- mailer_class = delivery.mailer_class
27
- delivery_job = mailer_class.delivery_job
28
-
29
- delivery_job
30
- .new(mailer_class.name, delivery.action.to_s, delivery_method, params: delivery.params, args: delivery.args)
31
- .set(options)
32
- end
33
-
34
- ActiveJob.perform_all_later(jobs)
35
- end
36
- end
37
-
38
6
  # = Action Mailer \MessageDelivery
39
7
  #
40
8
  # The +ActionMailer::MessageDelivery+ class is used by
@@ -102,7 +102,7 @@ module ActionMailer
102
102
  #
103
103
  # def test_email_with_parameters
104
104
  # ContactMailer.with(greeting: "Hello").welcome.deliver_later
105
- # assert_enqueued_email_with ContactMailer, :welcome, args: { greeting: "Hello" }
105
+ # assert_enqueued_email_with ContactMailer, :welcome, params: { greeting: "Hello" }
106
106
  # end
107
107
  #
108
108
  # def test_email_with_arguments
@@ -145,15 +145,6 @@ module ActionMailer
145
145
  # ContactMailer.welcome.deliver_later
146
146
  # end
147
147
  # end
148
- #
149
- # If +args+ is provided as a Hash, a parameterized email is matched.
150
- #
151
- # def test_parameterized_email
152
- # assert_enqueued_email_with ContactMailer, :welcome,
153
- # args: {email: 'user@example.com'} do
154
- # ContactMailer.with(email: 'user@example.com').welcome.deliver_later
155
- # end
156
- # end
157
148
  def assert_enqueued_email_with(mailer, method, params: nil, args: nil, queue: nil, &block)
158
149
  if mailer.is_a? ActionMailer::Parameterized::Mailer
159
150
  params = mailer.instance_variable_get(:@params)
data/lib/action_mailer.rb CHANGED
@@ -58,15 +58,47 @@ module ActionMailer
58
58
  autoload :QueuedDelivery
59
59
  autoload :FormBuilder
60
60
 
61
- def self.eager_load!
62
- super
61
+ class << self
62
+ # Enqueue many emails at once to be delivered through Active Job.
63
+ # When the individual job runs, it will send the email using +deliver_now+.
64
+ def deliver_all_later(*deliveries, **options)
65
+ _deliver_all_later("deliver_now", *deliveries, **options)
66
+ end
67
+
68
+ # Enqueue many emails at once to be delivered through Active Job.
69
+ # When the individual job runs, it will send the email using +deliver_now!+.
70
+ # That means that the message will be sent bypassing checking +perform_deliveries+
71
+ # and +raise_delivery_errors+, so use with caution.
72
+ def deliver_all_later!(*deliveries, **options)
73
+ _deliver_all_later("deliver_now!", *deliveries, **options)
74
+ end
75
+
76
+ def eager_load!
77
+ super
63
78
 
64
- require "mail"
65
- Mail.eager_autoload!
79
+ require "mail"
80
+ Mail.eager_autoload!
66
81
 
67
- Base.descendants.each do |mailer|
68
- mailer.eager_load! unless mailer.abstract?
82
+ Base.descendants.each do |mailer|
83
+ mailer.eager_load! unless mailer.abstract?
84
+ end
69
85
  end
86
+
87
+ private
88
+ def _deliver_all_later(delivery_method, *deliveries, **options)
89
+ deliveries = deliveries.first if deliveries.first.is_a?(Array)
90
+
91
+ jobs = deliveries.map do |delivery|
92
+ mailer_class = delivery.mailer_class
93
+ delivery_job = mailer_class.delivery_job
94
+
95
+ delivery_job
96
+ .new(mailer_class.name, delivery.action.to_s, delivery_method, params: delivery.params, args: delivery.args)
97
+ .set(options)
98
+ end
99
+
100
+ ActiveJob.perform_all_later(jobs)
101
+ end
70
102
  end
71
103
  end
72
104
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionmailer
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,56 +15,56 @@ 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: actionpack
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - '='
31
31
  - !ruby/object:Gem::Version
32
- version: 8.1.3.1
32
+ version: 8.1.4
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - '='
38
38
  - !ruby/object:Gem::Version
39
- version: 8.1.3.1
39
+ version: 8.1.4
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: actionview
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - '='
45
45
  - !ruby/object:Gem::Version
46
- version: 8.1.3.1
46
+ version: 8.1.4
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - '='
52
52
  - !ruby/object:Gem::Version
53
- version: 8.1.3.1
53
+ version: 8.1.4
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: activejob
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - '='
59
59
  - !ruby/object:Gem::Version
60
- version: 8.1.3.1
60
+ version: 8.1.4
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - '='
66
66
  - !ruby/object:Gem::Version
67
- version: 8.1.3.1
67
+ version: 8.1.4
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: mail
70
70
  requirement: !ruby/object:Gem::Requirement
@@ -134,10 +134,10 @@ licenses:
134
134
  - MIT
135
135
  metadata:
136
136
  bug_tracker_uri: https://github.com/rails/rails/issues
137
- changelog_uri: https://github.com/rails/rails/blob/v8.1.3.1/actionmailer/CHANGELOG.md
138
- documentation_uri: https://api.rubyonrails.org/v8.1.3.1/
137
+ changelog_uri: https://github.com/rails/rails/blob/v8.1.4/actionmailer/CHANGELOG.md
138
+ documentation_uri: https://api.rubyonrails.org/v8.1.4/
139
139
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
140
- source_code_uri: https://github.com/rails/rails/tree/v8.1.3.1/actionmailer
140
+ source_code_uri: https://github.com/rails/rails/tree/v8.1.4/actionmailer
141
141
  rubygems_mfa_required: 'true'
142
142
  rdoc_options: []
143
143
  require_paths:
@@ -154,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
154
  version: '0'
155
155
  requirements:
156
156
  - none
157
- rubygems_version: 4.0.16
157
+ rubygems_version: 4.0.20
158
158
  specification_version: 4
159
159
  summary: Email composition and delivery framework (part of Rails).
160
160
  test_files: []