lib/airbrake-ruby/filters/gem_root_filter.rb
module Airbrake module Filters # Replaces paths to gems with a placeholder. # @api private class GemRootFilter # @return [String] GEM_ROOT_LABEL = '/GEM_ROOT'.freeze # @return [Integer] attr_reader :weight def initialize @weight = 120 end # @macro call_filter def call(notice) return unless defined?(Gem) notice[:errors].each do |error| Gem.path.each do |gem_path| error[:backtrace].each do |frame| # If the frame is unparseable, then 'file' is nil, thus nothing to # filter (all frame's data is in 'function' instead). next unless (file = frame[:file]) frame[:file] = file.sub(/\A#{gem_path}/, GEM_ROOT_LABEL) end end end end end end end