module Bullet::StackTraceFilter

Constants

IS_RUBY_19
VENDOR_PATH

Public Instance Methods

caller_in_project() click to toggle source
# File lib/bullet/stack_trace_filter.rb, line 8
def caller_in_project
  vendor_root = Bullet.app_root + VENDOR_PATH
  bundler_path = Bundler.bundle_path.to_s
  select_caller_locations do |location|
    caller_path = location_as_path(location)
    caller_path.include?(Bullet.app_root) && !caller_path.include?(vendor_root) &&
      !caller_path.include?(bundler_path) ||
      Bullet.stacktrace_includes.any? { |include_pattern| pattern_matches?(location, include_pattern) }
  end
end
excluded_stacktrace_path?() click to toggle source
# File lib/bullet/stack_trace_filter.rb, line 19
def excluded_stacktrace_path?
  Bullet.stacktrace_excludes.any? do |exclude_pattern|
    caller_in_project.any? { |location| pattern_matches?(location, exclude_pattern) }
  end
end

Private Instance Methods

location_as_path(location) click to toggle source
# File lib/bullet/stack_trace_filter.rb, line 50
def location_as_path(location)
  IS_RUBY_19 ? location : location.absolute_path.to_s
end
pattern_matches?(location, pattern) click to toggle source
# File lib/bullet/stack_trace_filter.rb, line 27
def pattern_matches?(location, pattern)
  path = location_as_path(location)
  case pattern
  when Array
    pattern_path = pattern.first
    filter = pattern.last
    return false unless pattern_matches?(location, pattern_path)

    case filter
    when Range
      filter.include?(location.lineno)
    when Integer
      filter == location.lineno
    when String
      filter == location.base_label
    end
  when String
    path.include?(pattern)
  when Regexp
    path =~ pattern
  end
end
select_caller_locations() { |caller_path| ... } click to toggle source
# File lib/bullet/stack_trace_filter.rb, line 54
def select_caller_locations
  if IS_RUBY_19
    caller.select { |caller_path| yield caller_path }
  else
    caller_locations.select { |location| yield location }
  end
end