From bdb1fcc3b8e0293f8b099111da2302fedf4fd513 Mon Sep 17 00:00:00 2001
From: Rick Olson <technoweenie@gmail.com>
Date: Sun, 8 Apr 2007 16:53:37 +0000
Subject: Fix WSOD due to modification of a formatted template extension so
 that requests to templates like 'foo.html.erb' fail on the second hit. 
 [Rick]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6506 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
---
 actionpack/CHANGELOG               | 2 ++
 actionpack/lib/action_view/base.rb | 6 +++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index f14748e03b..57fdda48a5 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
 *SVN*
 
+* Fix WSOD due to modification of a formatted template extension so that requests to templates like 'foo.html.erb' fail on the second hit.  [Rick]
+
 * Fix WSOD when template compilation fails [Rick]
 
 * Change ActionView template defaults.  Look for templates using the request format first, such as "show.html.erb" or "show.xml.builder", before looking for the old defaults like "show.erb" or "show.builder" [Rick]
diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb
index 4cca763d35..584839a22e 100644
--- a/actionpack/lib/action_view/base.rb
+++ b/actionpack/lib/action_view/base.rb
@@ -252,7 +252,7 @@ module ActionView #:nodoc:
         else
           template_extension = pick_template_extension(template_path).to_s
           template_file_name = full_template_path(template_path, template_extension)
-          template_extension.gsub!(/^\w+\./, '') # strip off any formats
+          template_extension = template_extension.gsub(/^\w+\./, '') # strip off any formats
         end
       else
         template_file_name = template_path
@@ -267,7 +267,7 @@ module ActionView #:nodoc:
           e.sub_template_of(template_file_name)
           raise e
         else
-          raise TemplateError.new(find_base_path_for("#{template_path_without_extension}.#{template_extension}"), template_file_name, @assigns, template_source, e)
+          raise TemplateError.new(find_base_path_for("#{template_path_without_extension}.#{template_extension}") || view_paths.first, template_file_name, @assigns, template_source, e)
         end
       end
     end
@@ -582,7 +582,7 @@ module ActionView #:nodoc:
             logger.debug "Backtrace: #{e.backtrace.join("\n")}"
           end
 
-          raise TemplateError.new(extract_base_path_from(file_name) || @view_paths.first, file_name || template, @assigns, template, e)
+          raise TemplateError.new(extract_base_path_from(file_name) || view_paths.first, file_name || template, @assigns, template, e)
         end
 
         @@compile_time[render_symbol] = Time.now
-- 
cgit v1.2.3