class ScoutApm::Instruments::NetHttp

Attributes

context[R]

Public Class Methods

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

Public Instance Methods

install() click to toggle source
# File lib/scout_apm/instruments/net_http.rb, line 19
def install
  if defined?(::Net) && defined?(::Net::HTTP)
    @installed = true

    logger.info "Instrumenting Net::HTTP"

    ::Net::HTTP.class_eval do
      include ScoutApm::Tracer

      def request_with_scout_instruments(*args, &block)
        self.class.instrument("HTTP", "request", :ignore_children => true, :desc => request_scout_description(args.first)) do
          request_without_scout_instruments(*args, &block)
        end
      end

      def request_scout_description(req)
        path = req.path
        path = path.path if path.respond_to?(:path)

        # Protect against a nil address value
        if @address.nil?
          return "No Address Found"
        end

        max_length = ScoutApm::Agent.instance.context.config.value('instrument_http_url_length')
        (@address + path.split('?').first)[0..(max_length - 1)]
      rescue
        ""
      end

      alias request_without_scout_instruments request
      alias request request_with_scout_instruments
    end
  end
end
installed?() click to toggle source
# File lib/scout_apm/instruments/net_http.rb, line 15
def installed?
  @installed
end
logger() click to toggle source
# File lib/scout_apm/instruments/net_http.rb, line 11
def logger
  context.logger
end
request_scout_description(req) click to toggle source
# File lib/scout_apm/instruments/net_http.rb, line 34
def request_scout_description(req)
  path = req.path
  path = path.path if path.respond_to?(:path)

  # Protect against a nil address value
  if @address.nil?
    return "No Address Found"
  end

  max_length = ScoutApm::Agent.instance.context.config.value('instrument_http_url_length')
  (@address + path.split('?').first)[0..(max_length - 1)]
rescue
  ""
end
request_with_scout_instruments(*args, &block) click to toggle source
# File lib/scout_apm/instruments/net_http.rb, line 28
def request_with_scout_instruments(*args, &block)
  self.class.instrument("HTTP", "request", :ignore_children => true, :desc => request_scout_description(args.first)) do
    request_without_scout_instruments(*args, &block)
  end
end