Class: Rack::Reqorder::BacktraceCleaner
- Inherits:
-
Object
- Object
- Rack::Reqorder::BacktraceCleaner
- Defined in:
- lib/rack/reqorder/services/backtrace_cleaner.rb
Instance Method Summary collapse
-
#add_filter(&block) ⇒ Object
Adds a filter from the block provided.
-
#add_silencer(&block) ⇒ Object
Adds a silencer from the block provided.
-
#clean(backtrace, kind = :silent) ⇒ Object
(also: #filter)
Returns the backtrace after all filters and silencers have been run against it.
-
#initialize ⇒ BacktraceCleaner
constructor
A new instance of BacktraceCleaner.
-
#remove_filters! ⇒ Object
Removes all filters, but leaves in the silencers.
-
#remove_silencers! ⇒ Object
Removes all silencers, but leaves in the filters.
Constructor Details
#initialize ⇒ BacktraceCleaner
Returns a new instance of BacktraceCleaner.
3 4 5 |
# File 'lib/rack/reqorder/services/backtrace_cleaner.rb', line 3 def initialize @filters, @silencers = [], [] end |
Instance Method Details
#add_filter(&block) ⇒ Object
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, '') }
28 29 30 |
# File 'lib/rack/reqorder/services/backtrace_cleaner.rb', line 28 def add_filter(&block) @filters << block end |
#add_silencer(&block) ⇒ Object
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/ }
37 38 39 |
# File 'lib/rack/reqorder/services/backtrace_cleaner.rb', line 37 def add_silencer(&block) @silencers << block end |
#clean(backtrace, kind = :silent) ⇒ Object Also known as: filter
Returns the backtrace after all filters and silencers have been run against it. Filters run first, then silencers.
9 10 11 12 13 14 15 16 17 18 19 20 |
# 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 |
#remove_filters! ⇒ Object
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.
51 52 53 |
# File 'lib/rack/reqorder/services/backtrace_cleaner.rb', line 51 def remove_filters! @filters = [] end |
#remove_silencers! ⇒ Object
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.
44 45 46 |
# File 'lib/rack/reqorder/services/backtrace_cleaner.rb', line 44 def remove_silencers! @silencers = [] end |