From 53b98f1ddabe5375ae92b014c41e2ef8a2606927 Mon Sep 17 00:00:00 2001 From: "yuuji.yaginuma" Date: Fri, 3 Feb 2017 18:54:04 +0900 Subject: Add `:args` to `process.action_mailer` event --- actionmailer/CHANGELOG.md | 4 ++++ actionmailer/lib/action_mailer/base.rb | 3 ++- actionmailer/test/base_test.rb | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) (limited to 'actionmailer') diff --git a/actionmailer/CHANGELOG.md b/actionmailer/CHANGELOG.md index 54b07a626b..6ec10c7a70 100644 --- a/actionmailer/CHANGELOG.md +++ b/actionmailer/CHANGELOG.md @@ -1,3 +1,7 @@ +* Add `:args` to `process.action_mailer` event. + + *Yuji Yaginuma* + * Add parameterized invocation of mailers as a way to share before filters and defaults between actions. See ActionMailer::Parameterized for a full example of the benefit. diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index f02108a859..444be944df 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -598,7 +598,8 @@ module ActionMailer def process(method_name, *args) #:nodoc: payload = { mailer: self.class.name, - action: method_name + action: method_name, + args: args } ActiveSupport::Notifications.instrument("process.action_mailer", payload) do diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb index 490aaf33fc..61960d411d 100644 --- a/actionmailer/test/base_test.rb +++ b/actionmailer/test/base_test.rb @@ -834,6 +834,25 @@ class BaseTest < ActiveSupport::TestCase assert_equal "special indeed!", mail["X-Special-Header"].to_s end + test "notification for process" do + begin + events = [] + ActiveSupport::Notifications.subscribe("process.action_mailer") do |*args| + events << ActiveSupport::Notifications::Event.new(*args) + end + + BaseMailer.welcome(body: "Hello there").deliver_now + + assert_equal 1, events.length + assert_equal "process.action_mailer", events[0].name + assert_equal "BaseMailer", events[0].payload[:mailer] + assert_equal :welcome, events[0].payload[:action] + assert_equal [{ body: "Hello there" }], events[0].payload[:args] + ensure + ActiveSupport::Notifications.unsubscribe "process.action_mailer" + end + end + private # Execute the block setting the given values and restoring old values after -- cgit v1.2.3