mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Adding ability for the procs to be called within the instance, allows you to pass results from instance methods to the mail header
Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
parent
08b07b60b6
commit
ceaa100e59
2 changed files with 15 additions and 2 deletions
|
@ -530,7 +530,7 @@ module ActionMailer #:nodoc:
|
|||
|
||||
# Call all the procs (if any)
|
||||
default_values = self.class.default.merge(self.class.default) do |k,v|
|
||||
v.respond_to?(:call) ? v.call : v
|
||||
v.respond_to?(:call) ? v.bind(self).call : v
|
||||
end
|
||||
|
||||
# Handle defaults
|
||||
|
|
|
@ -116,11 +116,19 @@ class BaseTest < ActiveSupport::TestCase
|
|||
|
||||
class ProcMailer < ActionMailer::Base
|
||||
default :to => 'system@test.lindsaar.net',
|
||||
'X-Proc-Method' => Proc.new { Time.now.to_i.to_s }
|
||||
'X-Proc-Method' => Proc.new { Time.now.to_i.to_s },
|
||||
:subject => Proc.new { give_a_greeting }
|
||||
|
||||
def welcome
|
||||
mail
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def give_a_greeting
|
||||
"Thanks for signing up this afternoon"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
test "method call to mail does not raise error" do
|
||||
|
@ -577,6 +585,11 @@ class BaseTest < ActiveSupport::TestCase
|
|||
mail2 = ProcMailer.welcome
|
||||
assert(mail1['X-Proc-Method'].to_s.to_i > mail2['X-Proc-Method'].to_s.to_i)
|
||||
end
|
||||
|
||||
test "we can call other defined methods on the class as needed" do
|
||||
mail = ProcMailer.welcome
|
||||
assert_equal("Thanks for signing up this afternoon", mail.subject)
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
|
|
Loading…
Reference in a new issue