diff options
author | Nicholas Seckar <nseckar@gmail.com> | 2005-10-18 14:06:34 +0000 |
---|---|---|
committer | Nicholas Seckar <nseckar@gmail.com> | 2005-10-18 14:06:34 +0000 |
commit | 60b6fac5deec3317acaca8dc3d399faea25223b2 (patch) | |
tree | 2c9628661e6286baad8f9f81ec81781da1a8c66e | |
parent | 851dd0806be4e21f9a4fdcc77162711f46095bc5 (diff) | |
download | rails-60b6fac5deec3317acaca8dc3d399faea25223b2.tar.gz rails-60b6fac5deec3317acaca8dc3d399faea25223b2.tar.bz2 rails-60b6fac5deec3317acaca8dc3d399faea25223b2.zip |
Remove generated code from app traces; improve accuracy of framework traces
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2676 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r-- | activesupport/CHANGELOG | 5 | ||||
-rw-r--r-- | activesupport/lib/active_support/core_ext/exception.rb | 7 | ||||
-rw-r--r-- | activesupport/test/core_ext/exception_test.rb | 8 |
3 files changed, 19 insertions, 1 deletions
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG index 3c1be355ca..b998d87d29 100644 --- a/activesupport/CHANGELOG +++ b/activesupport/CHANGELOG @@ -1,3 +1,8 @@ +* Classify generated routing code as framework code to avoid appearing in application traces. [Nicholas Seckar] + +* Show all framework frames in the framework trace. [Nicholas Seckar] + + *1.2.0* (October 16th, 2005) * Update Exception extension to show the first few framework frames in an application trace. [Nicholas Seckar] diff --git a/activesupport/lib/active_support/core_ext/exception.rb b/activesupport/lib/active_support/core_ext/exception.rb index 5a2d21590b..2541f37495 100644 --- a/activesupport/lib/active_support/core_ext/exception.rb +++ b/activesupport/lib/active_support/core_ext/exception.rb @@ -3,6 +3,7 @@ class Exception alias :clean_message :message TraceSubstitutions = [] + FrameworkRegexp = /generated_code|vendor|dispatch|ruby|script\/\w+/ def clean_backtrace backtrace.collect do |line| @@ -16,9 +17,13 @@ class Exception before_application_frame = true clean_backtrace.reject do |line| - non_app_frame = !! (line =~ /vendor|dispatch|ruby|script\/\w+/) + non_app_frame = !! (line =~ FrameworkRegexp) before_application_frame = false unless non_app_frame non_app_frame && ! before_application_frame end end + + def framework_backtrace + clean_backtrace.select {|line| line =~ FrameworkRegexp} + end end
\ No newline at end of file diff --git a/activesupport/test/core_ext/exception_test.rb b/activesupport/test/core_ext/exception_test.rb index 7f5e64bc9f..58f1ba5540 100644 --- a/activesupport/test/core_ext/exception_test.rb +++ b/activesupport/test/core_ext/exception_test.rb @@ -34,5 +34,13 @@ class ExceptionExtTests < Test::Unit::TestCase assert_kind_of Exception, e assert_equal ['vendor/file.rb some stuff', 'bhal.rb', 'almost all'], e.application_backtrace end + + def test_framework_backtrace_with_before + Exception::TraceSubstitutions << [/\s*hidden.*/, ''] + e = get_exception RuntimeError, 'RAWR', ['vendor/file.rb some stuff', 'bhal.rb', ' vendor/file.rb some stuff', 'almost all'] + assert_kind_of Exception, e + assert_equal ['vendor/file.rb some stuff', ' vendor/file.rb some stuff'], e.framework_backtrace + end + end
\ No newline at end of file |