class Rack::Reqorder::BacktraceCleaner
Public Class Methods
new()
click to toggle source
# File lib/rack/reqorder/services/backtrace_cleaner.rb, line 3 def initialize @filters, @silencers = [], [] end
Public Instance Methods
add_filter(&block)
click to toggle source
Adds a filter from the block provided. Each line in the backtrace will be mapped against this filter.
# Will turn "/my/rails/root/app/models/person.rb" into "/app/models/person.rb" backtrace_cleaner.add_filter { |line| line.gsub(Rails.root, '') }
# File lib/rack/reqorder/services/backtrace_cleaner.rb, line 28 def add_filter(&block) @filters << block end
add_silencer(&block)
click to toggle source
Adds a silencer from the block provided. If the silencer returns true
for a given line, it will be excluded from the clean backtrace.
# Will reject all lines that include the word "mongrel", like "/gems/mongrel/server.rb" or "/app/my_mongrel_server/rb" backtrace_cleaner.add_silencer { |line| line =~ /mongrel/ }
# File lib/rack/reqorder/services/backtrace_cleaner.rb, line 37 def add_silencer(&block) @silencers << block end
clean(backtrace, kind = :silent)
click to toggle source
Returns the backtrace after all filters and silencers have been run against it. Filters run first, then silencers.
# File lib/rack/reqorder/services/backtrace_cleaner.rb, line 9 def clean(backtrace, kind = :silent) filtered = filter_backtrace(backtrace) case kind when :silent silence(filtered) when :noise noise(filtered) else filtered end end
Also aliased as: filter
remove_filters!()
click to toggle source
Removes all filters, but leaves in the silencers. Useful if you suddenly need to see entire filepaths in the backtrace that you had already filtered out.
# File lib/rack/reqorder/services/backtrace_cleaner.rb, line 51 def remove_filters! @filters = [] end
remove_silencers!()
click to toggle source
Removes all silencers, but leaves in the filters. Useful if your context of debugging suddenly expands as you suspect a bug in one of the libraries you use.
# File lib/rack/reqorder/services/backtrace_cleaner.rb, line 44 def remove_silencers! @silencers = [] end
Private Instance Methods
filter_backtrace(backtrace)
click to toggle source
# File lib/rack/reqorder/services/backtrace_cleaner.rb, line 56 def filter_backtrace(backtrace) @filters.each do |f| backtrace = backtrace.map { |line| f.call(line) } end backtrace end
noise(backtrace)
click to toggle source
# File lib/rack/reqorder/services/backtrace_cleaner.rb, line 72 def noise(backtrace) backtrace - silence(backtrace) end
silence(backtrace)
click to toggle source
# File lib/rack/reqorder/services/backtrace_cleaner.rb, line 64 def silence(backtrace) @silencers.each do |s| backtrace = backtrace.reject { |line| s.call(line) } end backtrace end