Sha256: d1dea24cc03c66c4445e36623f7ee5b9b9075d89cf163ec73a2f2ac3b230847b

Contents?: true

Size: 1.1 KB

Versions: 39

Compression:

Stored size: 1.1 KB

Contents

# encoding: utf-8

require 'one_apm/rack/middleware_wrapper'

LibraryDetection.defer do
  named :rails_middleware

  depends_on do
    defined?(::Rails) && ::Rails::VERSION::MAJOR.to_i >= 3
  end

  depends_on do
    !OneApm::Manager.config[:disable_rack_middleware]
  end

  executes do
    OneApm::Manager.logger.info("Installing Rails 3+ middleware instrumentation")

    module ActionDispatch
      class MiddlewareStack
        class Middleware

          def build_with_one_apm(app)
            # MiddlewareWrapper.wrap guards against double-wrapping here.
            # We need to instrument the innermost app (usually a RouteSet),
            # which will never itself be the return value from #build, but will
            # instead be the initial value of the app argument.
            wrapped_app = ::OneApm::Rack::MiddlewareWrapper.wrap(app)
            result = build_without_one_apm(wrapped_app)
            ::OneApm::Rack::MiddlewareWrapper.wrap(result)
          end

          alias_method :build_without_one_apm, :build
          alias_method :build, :build_with_one_apm
        end
      end
    end

  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
oneapm_rpm-1.4.2 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.4.1 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.4.0 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.7 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.7.rc1 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.6 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.6.rc1 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.5 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.5.rc1 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.4 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.4.rc1 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.3 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.3.rc1 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.2 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.2.rc1 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.1 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.1.rc1 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.0 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.3.0.rc1 lib/one_apm/inst/rails_middleware.rb
oneapm_rpm-1.2.9 lib/one_apm/inst/rails_middleware.rb