diff --git a/actionmailer/CHANGELOG b/actionmailer/CHANGELOG index 00c672788c..3320ede638 100644 --- a/actionmailer/CHANGELOG +++ b/actionmailer/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Template paths with dot chars in them no longer mess up implicit template selection for multipart messages #3332 [Chad Fowler] + * Make sure anything with content-disposition of "attachment" is passed to the attachment presenter when parsing an email body [Jamis Buck] * Make sure TMail#attachments includes anything with content-disposition of "attachment", regardless of content-type [Jamis Buck] diff --git a/actionmailer/Rakefile b/actionmailer/Rakefile index f0dd7b66d7..ee9cbe762d 100755 --- a/actionmailer/Rakefile +++ b/actionmailer/Rakefile @@ -25,7 +25,7 @@ Rake::TestTask.new { |t| t.libs << "test" t.pattern = 'test/*_test.rb' t.verbose = true - t.warning = true + t.warning = false } diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 39fa1e4aac..97bd83395c 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -305,7 +305,7 @@ module ActionMailer # normal template exists (or if there were no implicit parts) we render # it. template_exists = @parts.empty? - template_exists ||= Dir.glob("#{template_path}/#{@template}.*").any? { |i| i.split(".").length == 2 } + template_exists ||= Dir.glob("#{template_path}/#{@template}.*").any? { |i| File.basename(i).split(".").length == 2 } @body = render_message(@template, @body) if template_exists # Finally, if there are other message parts and a textual body exists, diff --git a/actionmailer/test/fixtures/path.with.dots/multipart_with_template_path_with_dots.rhtml b/actionmailer/test/fixtures/path.with.dots/multipart_with_template_path_with_dots.rhtml new file mode 100644 index 0000000000..897a5065cf --- /dev/null +++ b/actionmailer/test/fixtures/path.with.dots/multipart_with_template_path_with_dots.rhtml @@ -0,0 +1 @@ +Have a lovely picture, from me. Enjoy! \ No newline at end of file diff --git a/actionmailer/test/mail_service_test.rb b/actionmailer/test/mail_service_test.rb index 4d569da31f..838c49b7c3 100755 --- a/actionmailer/test/mail_service_test.rb +++ b/actionmailer/test/mail_service_test.rb @@ -23,6 +23,20 @@ class Net::SMTP end end +class FunkyPathMailer < ActionMailer::Base + def multipart_with_template_path_with_dots(recipient) + recipients recipient + subject "Have a lovely picture" + from "Chad Fowler " + attachment :content_type => "image/jpeg", + :body => "not really a jpeg, we're only testing, after all" + end + + def template_path + "#{File.dirname(__FILE__)}/fixtures/path.with.dots" + end +end + class TestMailer < ActionMailer::Base def signed_up(recipient) @@ -748,9 +762,14 @@ EOF end def test_deliver_with_mail_object - mail = TestMailer::create_headers_with_nonalpha_chars(@recipient) + mail = TestMailer.create_headers_with_nonalpha_chars(@recipient) assert_nothing_raised { TestMailer.deliver(mail) } assert_equal 1, TestMailer.deliveries.length end + + def test_multipart_with_template_path_with_dots + mail = FunkyPathMailer.create_multipart_with_template_path_with_dots(@recipient) + assert_equal 2, mail.parts.length + end end