diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2007-06-07 23:42:47 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2007-06-07 23:42:47 +0000 |
commit | 271404e8b929a5904dfe1a7007bee340139b6576 (patch) | |
tree | efa066c0032f5b5c3320c867ac5b9a101db164fd /actionmailer/lib/action_mailer | |
parent | 869a172a8a6e2d2182f16e959f4a41fa10df133a (diff) | |
download | rails-271404e8b929a5904dfe1a7007bee340139b6576.tar.gz rails-271404e8b929a5904dfe1a7007bee340139b6576.tar.bz2 rails-271404e8b929a5904dfe1a7007bee340139b6576.zip |
Register alternative template engines using ActionMailer::Base.register_template_extension('haml'). Closes #7534.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6962 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionmailer/lib/action_mailer')
-rw-r--r-- | actionmailer/lib/action_mailer/base.rb | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 378168bc04..43cbbcbcfe 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -230,6 +230,9 @@ module ActionMailer #:nodoc: class_inheritable_accessor :template_root cattr_accessor :logger + cattr_accessor :template_extensions + @@template_extensions = ['erb', 'builder', 'rhtml', 'rxml'] + @@smtp_settings = { :address => "localhost", :port => 25, @@ -363,6 +366,17 @@ module ActionMailer #:nodoc: def deliver(mail) new.deliver!(mail) end + + # Register a template extension so mailer templates written in a + # templating language other than rhtml or rxml are supported. + # To use this, include in your template-language plugin's init + # code or on a per-application basis, this can be invoked from + # config/environment.rb: + # + # ActionMailer::Base.register_template_extension('haml') + def register_template_extension(extension) + template_extensions << extension + end end # Instantiate a new mailer object. If +method_name+ is not +nil+, the mailer @@ -388,9 +402,9 @@ module ActionMailer #:nodoc: if @parts.empty? templates = Dir.glob("#{template_path}/#{@template}.*") templates.each do |path| - # TODO: don't hardcode erb|builder basename = File.basename(path) - next unless md = /^([^\.]+)\.([^\.]+\.[^\.]+)\.(erb|builder|rhtml|rxml)$/.match(basename) + template_regex = Regexp.new("^([^\\\.]+)\\\.([^\\\.]+\\\.[^\\\.]+)\\\.(" + template_extensions.join('|') + ")$") + next unless md = template_regex.match(basename) template_name = basename content_type = md.captures[1].gsub('.', '/') @parts << Part.new(:content_type => content_type, |