Class: SnapDiff::BacktraceFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/snap_diff/error_with_filtered_backtrace.rb

Constant Summary collapse

LIB_DIRECTORY =
File.expand_path(File.join(File.dirname(__FILE__), "..")) + File::SEPARATOR

Instance Method Summary collapse

Constructor Details

#initialize(lib_directory = LIB_DIRECTORY) ⇒ BacktraceFilter

Returns a new instance of BacktraceFilter.



7
8
9
10
11
# File 'lib/snap_diff/error_with_filtered_backtrace.rb', line 7

def initialize(lib_directory = LIB_DIRECTORY)
  # Trailing separator keeps the prefix match on a directory boundary,
  # so "/app/lib" does not also reject "/app/library".
  @lib_directory = lib_directory.end_with?(File::SEPARATOR) ? lib_directory : lib_directory + File::SEPARATOR
end

Instance Method Details

#filtered(backtrace) ⇒ Array<String>

Filters out any backtrace lines originating from the library directory or from gems such as ActiveSupport, Minitest, and Railties

Parameters:

  • backtrace (Array<String>)

Returns:

  • (Array<String>)


16
17
18
19
20
# File 'lib/snap_diff/error_with_filtered_backtrace.rb', line 16

def filtered(backtrace)
  backtrace
    .reject { |location| File.expand_path(location).start_with?(@lib_directory) }
    .reject { |l| l =~ /gems\/(activesupport|minitest|railties)/ }
end