1
0
Fork 0
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:
Mikel Lindsaar 2010-05-02 13:16:28 +10:00 committed by José Valim
parent 08b07b60b6
commit ceaa100e59
2 changed files with 15 additions and 2 deletions

View file

@ -530,7 +530,7 @@ module ActionMailer #:nodoc:
# Call all the procs (if any) # Call all the procs (if any)
default_values = self.class.default.merge(self.class.default) do |k,v| 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 end
# Handle defaults # Handle defaults

View file

@ -116,11 +116,19 @@ class BaseTest < ActiveSupport::TestCase
class ProcMailer < ActionMailer::Base class ProcMailer < ActionMailer::Base
default :to => 'system@test.lindsaar.net', 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 def welcome
mail mail
end end
private
def give_a_greeting
"Thanks for signing up this afternoon"
end
end end
test "method call to mail does not raise error" do test "method call to mail does not raise error" do
@ -577,6 +585,11 @@ class BaseTest < ActiveSupport::TestCase
mail2 = ProcMailer.welcome mail2 = ProcMailer.welcome
assert(mail1['X-Proc-Method'].to_s.to_i > mail2['X-Proc-Method'].to_s.to_i) assert(mail1['X-Proc-Method'].to_s.to_i > mail2['X-Proc-Method'].to_s.to_i)
end 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 protected