Use `set_backtrace` instead of `@backtrace` in ActionView error

This commit is contained in:
Shimpei Makimoto 2013-10-31 00:48:09 +09:00
parent 314e2cc05b
commit 1e848906c5
3 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,7 @@
* Use `set_backtrace` instead of instance variable `@backtrace` in ActionView exceptions
*Shimpei Makimoto*
* Fix `simple_format` escapes own output when passing `sanitize: true`
*Paul Seidemann*

View File

@ -56,13 +56,13 @@ module ActionView
class Error < ActionViewError #:nodoc:
SOURCE_CODE_RADIUS = 3
attr_reader :original_exception, :backtrace
attr_reader :original_exception
def initialize(template, original_exception)
super(original_exception.message)
@template, @original_exception = template, original_exception
@sub_templates = nil
@backtrace = original_exception.backtrace
set_backtrace(original_exception.backtrace)
end
def file_name

View File

@ -6,6 +6,13 @@ class TemplateErrorTest < ActiveSupport::TestCase
assert_equal "original", error.message
end
def test_provides_original_backtrace
original_exception = Exception.new
original_exception.set_backtrace(%W[ foo bar baz ])
error = ActionView::Template::Error.new("test", original_exception)
assert_equal %W[ foo bar baz ], error.backtrace
end
def test_provides_useful_inspect
error = ActionView::Template::Error.new("test", Exception.new("original"))
assert_equal "#<ActionView::Template::Error: original>", error.inspect