aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rake/backtrace.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rake/backtrace.rb')
-rw-r--r--lib/rake/backtrace.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/rake/backtrace.rb b/lib/rake/backtrace.rb
new file mode 100644
index 0000000000..038ca57906
--- /dev/null
+++ b/lib/rake/backtrace.rb
@@ -0,0 +1,18 @@
+module Rake
+ module Backtrace
+ SUPPRESSED_PATHS =
+ RbConfig::CONFIG.values_at(*RbConfig::CONFIG.
+ keys.grep(/(prefix|libdir)/)) + [
+ File.join(File.dirname(__FILE__), ".."),
+ ].map { |f| Regexp.quote(File.expand_path(f)) }
+ SUPPRESSED_PATHS.reject! { |s| s.nil? || s =~ /^ *$/ }
+
+ SUPPRESS_PATTERN = %r!(\A#{SUPPRESSED_PATHS.join('|')}|bin/rake:\d+)!i
+
+ def self.collapse(backtrace)
+ pattern = Rake.application.options.suppress_backtrace_pattern ||
+ SUPPRESS_PATTERN
+ backtrace.reject { |elem| elem =~ pattern }
+ end
+ end
+end