From bcd1333e3f747dbc5f57dcc451c0ea511cf8161c Mon Sep 17 00:00:00 2001 From: Alexandre Ruban Date: Mon, 18 Jan 2021 19:59:39 +0100 Subject: [PATCH] Default values are not evaluated when overridden --- actionmailer/lib/action_mailer/base.rb | 2 +- actionmailer/test/base_test.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 02e154670f..40d38bfd18 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -901,7 +901,7 @@ module ActionMailer end def apply_defaults(headers) - default_values = self.class.default.transform_values do |value| + default_values = self.class.default.except(*headers.keys).transform_values do |value| compute_default(value) end diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb index a29fd311b1..def9e0344a 100644 --- a/actionmailer/test/base_test.rb +++ b/actionmailer/test/base_test.rb @@ -833,6 +833,14 @@ class BaseTest < ActiveSupport::TestCase assert_equal("Thanks for signing up this afternoon", mail.subject) end + test "proc default values are not evaluated when overridden" do + with_default BaseMailer, from: -> { flunk }, to: -> { flunk } do + email = BaseMailer.welcome(from: "overridden-from@example.com", to: "overridden-to@example.com") + assert_equal ["overridden-from@example.com"], email.from + assert_equal ["overridden-to@example.com"], email.to + end + end + test "modifying the mail message with a before_action" do class BeforeActionMailer < ActionMailer::Base before_action :add_special_header!