aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/template_error.rb
diff options
context:
space:
mode:
authorClaudio Poli <masterkain@gmail.com>2008-09-20 22:57:45 -0500
committerJoshua Peek <josh@joshpeek.com>2008-09-20 22:57:45 -0500
commit5f83e1844c83c19cf97c6415b943c6ec3cb4bb06 (patch)
treece3552974bf06f82e0b8fb0b8edddd65be18af82 /actionpack/lib/action_view/template_error.rb
parentde96a8666d8edc9be57f6146e587a71d23dbeb41 (diff)
downloadrails-5f83e1844c83c19cf97c6415b943c6ec3cb4bb06.tar.gz
rails-5f83e1844c83c19cf97c6415b943c6ec3cb4bb06.tar.bz2
rails-5f83e1844c83c19cf97c6415b943c6ec3cb4bb06.zip
Fixed missing template paths on exception [#1082 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
Diffstat (limited to 'actionpack/lib/action_view/template_error.rb')
-rw-r--r--actionpack/lib/action_view/template_error.rb30
1 files changed, 10 insertions, 20 deletions
diff --git a/actionpack/lib/action_view/template_error.rb b/actionpack/lib/action_view/template_error.rb
index 2368662f31..bcce331773 100644
--- a/actionpack/lib/action_view/template_error.rb
+++ b/actionpack/lib/action_view/template_error.rb
@@ -7,12 +7,14 @@ module ActionView
attr_reader :original_exception
def initialize(template, assigns, original_exception)
- @base_path = template.base_path.to_s
- @assigns, @source, @original_exception = assigns.dup, template.source, original_exception
- @file_path = template.filename
+ @template, @assigns, @original_exception = template, assigns.dup, original_exception
@backtrace = compute_backtrace
end
+ def file_name
+ @template.relative_path
+ end
+
def message
ActiveSupport::Deprecation.silence { original_exception.message }
end
@@ -24,7 +26,7 @@ module ActionView
def sub_template_message
if @sub_templates
"Trace of template inclusion: " +
- @sub_templates.collect { |template| strip_base_path(template) }.join(", ")
+ @sub_templates.collect { |template| template.relative_path }.join(", ")
else
""
end
@@ -34,18 +36,18 @@ module ActionView
return unless num = line_number
num = num.to_i
- source_code = IO.readlines(@file_path)
+ source_code = @template.source.split("\n")
start_on_line = [ num - SOURCE_CODE_RADIUS - 1, 0 ].max
end_on_line = [ num + SOURCE_CODE_RADIUS - 1, source_code.length].min
indent = ' ' * indentation
line_counter = start_on_line
- return unless source_code = source_code[start_on_line..end_on_line]
-
+ return unless source_code = source_code[start_on_line..end_on_line]
+
source_code.sum do |line|
line_counter += 1
- "#{indent}#{line_counter}: #{line}"
+ "#{indent}#{line_counter}: #{line}\n"
end
end
@@ -63,12 +65,6 @@ module ActionView
end
end
- def file_name
- stripped = strip_base_path(@file_path)
- stripped.slice!(0,1) if stripped[0] == ?/
- stripped
- end
-
def to_s
"\n\n#{self.class} (#{message}) #{source_location}:\n" +
"#{source_extract}\n #{clean_backtrace.join("\n ")}\n\n"
@@ -88,12 +84,6 @@ module ActionView
]
end
- def strip_base_path(path)
- stripped_path = File.expand_path(path).gsub(@base_path, "")
- stripped_path.gsub!(/^#{Regexp.escape File.expand_path(RAILS_ROOT)}/, '') if defined?(RAILS_ROOT)
- stripped_path
- end
-
def source_location
if line_number
"on line ##{line_number} of "