class Airbrake::Rack::RouteFilter

Adds route slugs to context/route. @since v7.5.0

Attributes

weight[R]

Public Class Methods

new() click to toggle source
# File lib/airbrake/rack/route_filter.rb, line 12
def initialize
  @weight = 100
end

Public Instance Methods

call(notice) click to toggle source
# File lib/airbrake/rack/route_filter.rb, line 16
def call(notice)
  return unless (request = notice.stash[:rack_request])

  notice[:context][:route] =
    if action_dispatch_request?(request)
      rails_route(request)
    elsif sinatra_request?(request)
      sinatra_route(request)
    end
end

Private Instance Methods

action_dispatch_request?(request) click to toggle source
# File lib/airbrake/rack/route_filter.rb, line 41
def action_dispatch_request?(request)
  defined?(ActionDispatch::Request) &&
    request.instance_of?(ActionDispatch::Request)
end
rails_route(request) click to toggle source
# File lib/airbrake/rack/route_filter.rb, line 29
def rails_route(request)
  return unless (route = Airbrake::Rails::App.recognize_route(request))

  route.path
end
sinatra_request?(request) click to toggle source
# File lib/airbrake/rack/route_filter.rb, line 46
def sinatra_request?(request)
  defined?(Sinatra::Request) && request.instance_of?(Sinatra::Request)
end
sinatra_route(request) click to toggle source
# File lib/airbrake/rack/route_filter.rb, line 35
def sinatra_route(request)
  return unless (route = request.env['sinatra.route'])

  route.split.drop(1).join(' ')
end