Sha256: 24f4e54ead43aff6055fc5bcc34ee640dadb74a42f6ab57a6b1f65e9ac2b8322

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

require 'new_relic/agent'

DependencyDetection.defer do
  named :faraday

  depends_on do
    defined?(::Faraday)
  end

  executes do
    ::NewRelic::Agent.logger.info 'Installing Faraday instrumentation'
  end

  executes do
    Faraday::Connection.class_eval do
      def run_request_with_newrelic_trace(method, url, params, headers, &block)
        newrelic_host = parse_host_for_newrelic url
        metrics = ["External/#{newrelic_host}/Faraday::Connection/#{method}", "External/#{newrelic_host}/all", "External/all"]
        if NewRelic::Agent::Transaction.recording_web_transaction?
          metrics << "External/allWeb"
        else
          metrics << "External/allOther"
        end
        self.class.trace_execution_scoped metrics do
          run_request_without_newrelic_trace(method, url, params, headers, &block)
        end
      end
      alias run_request_without_newrelic_trace run_request
      alias run_request run_request_with_newrelic_trace

      def parse_host_for_newrelic(url)
        return host if host
        URI(url).host.to_s
      rescue
        ''
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
newrelic-faraday-0.7.2 lib/newrelic_faraday/instrumentation.rb