aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/autolabeler.yml22
-rw-r--r--Gemfile.lock8
-rw-r--r--actionmailer/CHANGELOG.md11
-rw-r--r--actionmailer/lib/action_mailer/base.rb1
-rw-r--r--actionmailer/lib/action_mailer/parameterized.rb3
-rw-r--r--actionmailer/test/parameterized_test.rb13
6 files changed, 31 insertions, 27 deletions
diff --git a/.github/autolabeler.yml b/.github/autolabeler.yml
index c8033d8c30..d73b2e3362 100644
--- a/.github/autolabeler.yml
+++ b/.github/autolabeler.yml
@@ -4,8 +4,6 @@ actionmailer:
- "actionmailer/**/*"
actionpack:
- "actionpack/**/*"
-routing:
- - "actionpack/**/*routing*"
actionview:
- "actionview/**/*"
activejob:
@@ -14,12 +12,6 @@ activemodel:
- "activemodel/**/*"
activerecord:
- "activerecord/**/*"
-MySQL:
- - "activerecord/**/*mysql*"
-PostgreSQL:
- - "activerecord/**/*postgresql*"
-enum:
- - "activerecord/**/*enum*"
activestorage:
- "activestorage/**/*"
activesupport:
@@ -28,19 +20,5 @@ rails-ujs:
- "actionview/app/assets/javascripts/rails-ujs*/*"
railties:
- "railties/**/*"
-engines:
- - "railties/lib/rails/engine/**/*"
- - "railties/test/railties/**/*engine*"
docs:
- "guides/**/*"
-asset pipeline:
- - "guides/source/asset_pipeline.md"
-ci issues:
- - "ci/**/*"
-security:
- - "**/*security*"
- - "**/*secure*"
- - "**/*sanitize*"
- - "**/*sanitization*"
-i18n:
- - "**/*i18n*"
diff --git a/Gemfile.lock b/Gemfile.lock
index 727489b50a..b4f46698bc 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -339,12 +339,12 @@ GEM
mysql2 (0.5.2-x86-mingw32)
nio4r (2.3.1)
nio4r (2.3.1-java)
- nokogiri (1.8.4)
+ nokogiri (1.8.5)
mini_portile2 (~> 2.3.0)
- nokogiri (1.8.4-java)
- nokogiri (1.8.4-x64-mingw32)
+ nokogiri (1.8.5-java)
+ nokogiri (1.8.5-x64-mingw32)
mini_portile2 (~> 2.3.0)
- nokogiri (1.8.4-x86-mingw32)
+ nokogiri (1.8.5-x86-mingw32)
mini_portile2 (~> 2.3.0)
os (1.0.0)
parallel (1.12.1)
diff --git a/actionmailer/CHANGELOG.md b/actionmailer/CHANGELOG.md
index 1aa7485d3e..db6fc7ee9c 100644
--- a/actionmailer/CHANGELOG.md
+++ b/actionmailer/CHANGELOG.md
@@ -1,3 +1,14 @@
+* Allow ActionMailer classes to configure the parameterized delivery job
+ Example:
+ ```
+ class MyMailer < ApplicationMailer
+ self.parameterized_delivery_job = MyCustomDeliveryJob
+ ...
+ end
+ ```
+
+ *Luke Pearce*
+
* `ActionDispatch::IntegrationTest` includes `ActionMailer::TestHelper` module by default.
*Ricardo Díaz*
diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb
index 02e5ac2a3e..509d859ac3 100644
--- a/actionmailer/lib/action_mailer/base.rb
+++ b/actionmailer/lib/action_mailer/base.rb
@@ -462,6 +462,7 @@ module ActionMailer
helper ActionMailer::MailHelper
class_attribute :delivery_job, default: ::ActionMailer::DeliveryJob
+ class_attribute :parameterized_delivery_job, default: ::ActionMailer::Parameterized::DeliveryJob
class_attribute :default_params, default: {
mime_version: "1.0",
charset: "UTF-8",
diff --git a/actionmailer/lib/action_mailer/parameterized.rb b/actionmailer/lib/action_mailer/parameterized.rb
index 5e768e7106..0fe417affe 100644
--- a/actionmailer/lib/action_mailer/parameterized.rb
+++ b/actionmailer/lib/action_mailer/parameterized.rb
@@ -140,7 +140,8 @@ module ActionMailer
super
else
args = @mailer_class.name, @action.to_s, delivery_method.to_s, @params, *@args
- ActionMailer::Parameterized::DeliveryJob.set(options).perform_later(*args)
+ job = @mailer_class.parameterized_delivery_job
+ job.set(options).perform_later(*args)
end
end
end
diff --git a/actionmailer/test/parameterized_test.rb b/actionmailer/test/parameterized_test.rb
index ec6c5e9e67..d3b34fc3e3 100644
--- a/actionmailer/test/parameterized_test.rb
+++ b/actionmailer/test/parameterized_test.rb
@@ -53,4 +53,17 @@ class ParameterizedTest < ActiveSupport::TestCase
invitation = mailer.method(:anything)
end
end
+
+ test "should enqueue a parameterized request with the correct delivery job" do
+ old_delivery_job = ParamsMailer.parameterized_delivery_job
+ ParamsMailer.parameterized_delivery_job = ParameterizedDummyJob
+
+ assert_performed_with(job: ParameterizedDummyJob, args: ["ParamsMailer", "invitation", "deliver_now", { inviter: "david@basecamp.com", invitee: "jason@basecamp.com" } ]) do
+ @mail.deliver_later
+ end
+
+ ParamsMailer.parameterized_delivery_job = old_delivery_job
+ end
+
+ class ParameterizedDummyJob < ActionMailer::Parameterized::DeliveryJob; end
end