Sha256: 7a880ac09f571af1b33ba219c4df9e90983deb7f0518e10916dfcb79867d3855

Contents?: true

Size: 1.11 KB

Versions: 4

Compression:

Stored size: 1.11 KB

Contents

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::Instrumentation::MetricFrame.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)
        begin
          return host if host
          URI(url).host.to_s
        rescue
          ''
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
newrelic-faraday-0.7.1 lib/newrelic_faraday/instrumentation.rb
newrelic-faraday-0.7.0 lib/newrelic_faraday/instrumentation.rb
newrelic-faraday-0.6.5 lib/newrelic_faraday/instrumentation.rb
newrelic-faraday-0.6.4 lib/newrelic_faraday/instrumentation.rb