Sha256: 84b90e73744d3033320b3805bec3280a875270e14d45f03337fbfbc660ff4900

Contents?: true

Size: 1.41 KB

Versions: 4

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

require "rails/railtie"
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

4 entries across 4 versions & 1 rubygems

Version Path
honeycomb-beeline-1.0.0.pre.beta3 lib/honeycomb/integrations/rails.rb
honeycomb-beeline-1.0.0.pre.beta2 lib/honeycomb/integrations/rails.rb
honeycomb-beeline-1.0.0.pre.beta1 lib/honeycomb/integrations/rails.rb
honeycomb-beeline-1.0.0.pre.beta lib/honeycomb/integrations/rails.rb