airbrake/airbrake-ruby

View on GitHub
lib/airbrake-ruby/filters/root_directory_filter.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Airbrake
  module Filters
    # Replaces root directory with a label.
    # @api private
    class RootDirectoryFilter
      # @return [String]
      PROJECT_ROOT_LABEL = '/PROJECT_ROOT'.freeze

      # @return [Integer]
      attr_reader :weight

      def initialize(root_directory)
        @root_directory = root_directory
        @weight = 100
      end

      # @macro call_filter
      def call(notice)
        notice[:errors].each do |error|
          error[:backtrace].each do |frame|
            next unless (file = frame[:file])

            file.sub!(/\A#{@root_directory}/, PROJECT_ROOT_LABEL)
          end
        end
      end
    end
  end
end