From ceaa100e59c7953ce5c0e978ddd6d5bc046c9fd9 Mon Sep 17 00:00:00 2001 From: Mikel Lindsaar Date: Sun, 2 May 2010 13:16:28 +1000 Subject: Adding ability for the procs to be called within the instance, allows you to pass results from instance methods to the mail header MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- actionmailer/lib/action_mailer/base.rb | 2 +- actionmailer/test/base_test.rb | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) (limited to 'actionmailer') diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 3a49da5984..b88172dfc2 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -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 diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb index 81e41dc8d4..5506d62d6a 100644 --- a/actionmailer/test/base_test.rb +++ b/actionmailer/test/base_test.rb @@ -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 -- cgit v1.2.3