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 +4 -4
- data/CHANGELOG.md +12 -0
- data/lib/action_mailer/base.rb +10 -0
- data/lib/action_mailer/gem_version.rb +2 -2
- data/lib/action_mailer/mail_helper.rb +1 -1
- data/lib/action_mailer/message_delivery.rb +0 -32
- data/lib/action_mailer/test_helper.rb +1 -10
- data/lib/action_mailer.rb +38 -6
- metadata +13 -13
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4eb0ba2055f686d9d3dacf6719f7a8b86444101f6fe4e0282abe78c1a17fa573
|
|
4
|
+
data.tar.gz: f4ab7ae370d30d6b5430747abee2567b9ae90a5e71612bde1674ddb6e0abc170
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
data/lib/action_mailer/base.rb
CHANGED
|
@@ -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
|
|
@@ -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
|
|
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,
|
|
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
|
-
|
|
62
|
-
|
|
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
|
-
|
|
65
|
-
|
|
79
|
+
require "mail"
|
|
80
|
+
Mail.eager_autoload!
|
|
66
81
|
|
|
67
|
-
|
|
68
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
138
|
-
documentation_uri: https://api.rubyonrails.org/v8.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.
|
|
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.
|
|
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: []
|