From 1e848906c594d159da376dc1f41c7869c1f2249e Mon Sep 17 00:00:00 2001 From: Shimpei Makimoto Date: Thu, 31 Oct 2013 00:48:09 +0900 Subject: Use `set_backtrace` instead of `@backtrace` in ActionView error --- actionview/CHANGELOG.md | 4 ++++ actionview/lib/action_view/template/error.rb | 4 ++-- actionview/test/template/template_error_test.rb | 7 +++++++ 3 files changed, 13 insertions(+), 2 deletions(-) (limited to 'actionview') diff --git a/actionview/CHANGELOG.md b/actionview/CHANGELOG.md index 9eb68db101..787e6d68be 100644 --- a/actionview/CHANGELOG.md +++ b/actionview/CHANGELOG.md @@ -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* diff --git a/actionview/lib/action_view/template/error.rb b/actionview/lib/action_view/template/error.rb index a89d51221e..7b4b5e13e0 100644 --- a/actionview/lib/action_view/template/error.rb +++ b/actionview/lib/action_view/template/error.rb @@ -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 diff --git a/actionview/test/template/template_error_test.rb b/actionview/test/template/template_error_test.rb index 91424daeed..3971ec809c 100644 --- a/actionview/test/template/template_error_test.rb +++ b/actionview/test/template/template_error_test.rb @@ -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 "#", error.inspect -- cgit v1.2.3