Sha256: 69ba43484045c31f2ad952c0fb079dd0fe323d9b2fb59523c8a1d15432acc95a

Contents?: true

Size: 1.33 KB

Versions: 12

Compression:

Stored size: 1.33 KB

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

DependencyDetection.defer do
  named :httprb

  depends_on do
    defined?(HTTP) && defined?(HTTP::Client)
  end

  executes do
    ::NewRelic::Agent.logger.info 'Installing http.rb instrumentation'
    require 'new_relic/agent/cross_app_tracing'
    require 'new_relic/agent/http_clients/http_rb_wrappers'
  end

  executes do
    class HTTP::Client
      def perform_with_newrelic_trace(request, options)
        wrapped_request = ::NewRelic::Agent::HTTPClients::HTTPRequest.new(request)

        begin
          segment = NewRelic::Agent::Tracer.start_external_request_segment(
            library: wrapped_request.type,
            uri: wrapped_request.uri,
            procedure: wrapped_request.method
          )

          segment.add_request_headers wrapped_request

          response = perform_without_newrelic_trace(request, options)
          wrapped_response = ::NewRelic::Agent::HTTPClients::HTTPResponse.new response
          segment.read_response_headers wrapped_response

          response
        ensure
          segment.finish if segment
        end
      end

      alias perform_without_newrelic_trace perform
      alias perform perform_with_newrelic_trace
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
newrelic_rpm-6.8.0.360 lib/new_relic/agent/instrumentation/http.rb
newrelic_rpm-6.7.0.359 lib/new_relic/agent/instrumentation/http.rb
newrelic_rpm-6.6.0.358 lib/new_relic/agent/instrumentation/http.rb
newrelic_rpm-6.5.0.357 lib/new_relic/agent/instrumentation/http.rb
newrelic_rpm-6.4.0.356 lib/new_relic/agent/instrumentation/http.rb
newrelic_rpm-6.3.0.355 lib/new_relic/agent/instrumentation/http.rb
newrelic_rpm-6.2.0.354 lib/new_relic/agent/instrumentation/http.rb
newrelic_rpm-6.1.0.352 lib/new_relic/agent/instrumentation/http.rb
newrelic_rpm-6.0.0.351 lib/new_relic/agent/instrumentation/http.rb
newrelic_rpm-5.7.0.350 lib/new_relic/agent/instrumentation/http.rb
newrelic_rpm-5.6.0.349 lib/new_relic/agent/instrumentation/http.rb
newrelic_rpm-5.5.0.348 lib/new_relic/agent/instrumentation/http.rb