aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/exception.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/lib/active_support/core_ext/exception.rb')
-rw-r--r--activesupport/lib/active_support/core_ext/exception.rb17
1 files changed, 12 insertions, 5 deletions
diff --git a/activesupport/lib/active_support/core_ext/exception.rb b/activesupport/lib/active_support/core_ext/exception.rb
index 9564591e36..b594fbae8e 100644
--- a/activesupport/lib/active_support/core_ext/exception.rb
+++ b/activesupport/lib/active_support/core_ext/exception.rb
@@ -1,13 +1,19 @@
-require 'active_support/core_ext/pathname'
-
module ActiveSupport
FrozenObjectError = RUBY_VERSION < '1.9' ? TypeError : RuntimeError
end
# TODO: Turn all this into using the BacktraceCleaner.
class Exception # :nodoc:
+ # Clean the paths contained in the message.
+ def self.clean_paths(string)
+ require 'pathname' unless defined? Pathname
+ string.gsub(%r{[\w. ]+(/[\w. ]+)+(\.rb)?(\b|$)}) do |path|
+ Pathname.new(path).cleanpath
+ end
+ end
+
def clean_message
- Pathname.clean_within message
+ Exception.clean_paths(message)
end
TraceSubstitutions = []
@@ -16,9 +22,10 @@ class Exception # :nodoc:
def clean_backtrace
backtrace.collect do |line|
- Pathname.clean_within(TraceSubstitutions.inject(line) do |result, (regexp, sub)|
+ substituted = TraceSubstitutions.inject(line) do |result, (regexp, sub)|
result.gsub regexp, sub
- end)
+ end
+ Exception.clean_paths(substituted)
end
end