Allow mailer actions named send by using __send__ internally. Closes #6467.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5505 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Jeremy Kemper
2006-11-13 05:03:48 +00:00
parent f0753992ab
commit c3ff04b05d
3 changed files with 26 additions and 2 deletions

View File

@@ -1,5 +1,7 @@
*SVN*
* Allow mailer actions named send by using __send__ internally. #6467 [iGEL]
* Add assert_emails and assert_no_emails to test the number of emails delivered. #6479 [Jonathan Viney]
# Assert total number of emails delivered:
assert_emails 0

View File

@@ -369,7 +369,7 @@ module ActionMailer #:nodoc:
# rendered and a new TMail::Mail object created.
def create!(method_name, *parameters) #:nodoc:
initialize_defaults(method_name)
send(method_name, *parameters)
__send__(method_name, *parameters)
# If an explicit, textual body has not been set, we check assumptions.
unless String === @body
@@ -428,7 +428,7 @@ module ActionMailer #:nodoc:
logger.info "Sent mail:\n #{mail.encoded}" unless logger.nil?
begin
send("perform_delivery_#{delivery_method}", mail) if perform_deliveries
__send__("perform_delivery_#{delivery_method}", mail) if perform_deliveries
rescue Exception => e # Net::SMTP errors or sendmail pipe errors
raise e if raise_delivery_errors
end

View File

@@ -801,3 +801,25 @@ class InheritableTemplateRootTest < Test::Unit::TestCase
assert_equal expected, FunkyPathMailer.template_root
end
end
class MethodNamingTest < Test::Unit::TestCase
class TestMailer < ActionMailer::Base
def send
body 'foo'
end
end
def setup
ActionMailer::Base.delivery_method = :test
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.deliveries = []
end
def test_send_method
assert_nothing_raised do
assert_emails 1 do
TestMailer.deliver_send
end
end
end
end