module ElasticAPM::Spies::HTTPSpy::Ext
def perform(req, options)
def perform(req, options) unless (transaction = ElasticAPM.current_transaction) return super(req, options) end method = req.verb.to_s.upcase host = req.uri.host context = ElasticAPM::Span::Context.new( http: { url: req.uri, method: method }, destination: ElasticAPM::Span::Context::Destination.from_uri(req.uri, type: SUBTYPE) ) name = "#{method} #{host}" ElasticAPM.with_span( name, TYPE, subtype: SUBTYPE, context: context ) do |span| trace_context = span&.trace_context || transaction.trace_context trace_context.apply_headers { |key, value| req[key] = value } result = super(req, options) if (http = span&.context&.http) http.status_code = result.status.to_s end span&.outcome = Span::Outcome.from_http_status(result.status) result end end