Sha256: 7e03641f7dd8f123db5d521229f7bb6ba6cafdadccfc90c8a724e918cd64ac2b

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

require "rails"
require "honeycomb/integrations/active_support"
require "honeycomb/integrations/rack"

module Honeycomb
  # Add Rails specific information to the Honeycomb::Rack middleware
  module Rails
    def add_package_information(env)
      yield "meta.package", "rails"
      yield "meta.package_version", ::Rails::VERSION::STRING

      ::ActionDispatch::Request.new(env).tap do |request|
        yield "request.controller", request.params[:controller]
        yield "request.action", request.params[:action]

        break unless request.respond_to? :routes
        break unless request.routes.respond_to? :router

        found_route = false
        request.routes.router.recognize(request) do |route, _|
          break if found_route

          found_route = true
          yield "request.route", "#{env['REQUEST_METHOD']} #{route.path.spec}"
        end
      end
    end
  end

  # Automatically capture rack requests and create a trace
  class Railtie < ::Rails::Railtie
    initializer "honeycomb.install_middleware", after: :load_config_initializers do |app|
      if Honeycomb.client
        # what location should we insert the middleware at?
        app.config.middleware.insert_before(
          ::Rails::Rack::Logger,
          Honeycomb::Rack,
          client: Honeycomb.client,
        )
      end
    end
  end
end

Honeycomb::Rack.prepend Honeycomb::Rails

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
honeycomb-beeline-1.0.0.pre.alpha1 lib/honeycomb/integrations/rails.rb