Sha256: 6dc74d05fc44be46aef537b8319779ace82a34db5761c45ae2fe88bbaab846d2

Contents?: true

Size: 1.28 KB

Versions: 3

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

require "honeycomb/integrations/active_support"
require "honeycomb/integrations/rack"
require "honeycomb/integrations/warden"

module Honeycomb
  # Rails specific methods for building 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|
        # calling request.params will blow up if raw_post is nil
        # the only known cause of this is when using the
        # [twirp](https://github.com/twitchtv/twirp-ruby) rack app mounted in
        # the rails app
        if request.raw_post
          yield "request.controller", request.params[:controller]
          yield "request.action", request.params[:action]
        end

        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

    # Rails middleware
    class Middleware
      include Rack
      include Warden
      include Rails
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
honeycomb-beeline-1.3.0 lib/honeycomb/integrations/rails.rb
honeycomb-beeline-1.2.0 lib/honeycomb/integrations/rails.rb
honeycomb-beeline-1.1.1 lib/honeycomb/integrations/rails.rb