class ScoutApm::Instruments::MiddlewareSummary

Attributes

context[R]

Public Class Methods

new(context) click to toggle source
# File lib/scout_apm/instruments/middleware_summary.rb, line 11
def initialize(context)
  @context = context
  @installed = false
end

Public Instance Methods

build_with_scout_instruments(app = nil, &block) click to toggle source
# File lib/scout_apm/instruments/middleware_summary.rb, line 30
def build_with_scout_instruments(app = nil, &block)
  mw_stack = build_without_scout_instruments(app) { block.call if block }
  if app == mw_stack
    # Return the raw middleware stack if it equaled app. No
    # middlewares were created, so nothing to wrap & test.
    #
    # Avoids instrumentation of something that doesn't exist
    mw_stack
  else
    MiddlewareSummaryWrapper.new(mw_stack)
  end
end
install() click to toggle source
# File lib/scout_apm/instruments/middleware_summary.rb, line 24
def install
  if defined?(ActionDispatch) && defined?(ActionDispatch::MiddlewareStack)
    @installed = true

    logger.info("Instrumenting Middleware")
    ActionDispatch::MiddlewareStack.class_eval do
      def build_with_scout_instruments(app = nil, &block)
        mw_stack = build_without_scout_instruments(app) { block.call if block }
        if app == mw_stack
          # Return the raw middleware stack if it equaled app. No
          # middlewares were created, so nothing to wrap & test.
          #
          # Avoids instrumentation of something that doesn't exist
          mw_stack
        else
          MiddlewareSummaryWrapper.new(mw_stack)
        end
      end

      alias_method :build_without_scout_instruments, :build
      alias_method :build, :build_with_scout_instruments
    end
  end
end
installed?() click to toggle source
# File lib/scout_apm/instruments/middleware_summary.rb, line 20
def installed?
  @installed
end
logger() click to toggle source
# File lib/scout_apm/instruments/middleware_summary.rb, line 16
def logger
  context.logger
end