Module: Honeybadger::Plugins::NetHttp::Instrumentation

Defined in:
lib/honeybadger/plugins/net_http.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



8
9
10
11
# File 'lib/honeybadger/plugins/net_http.rb', line 8

def self.included(base)
  base.send(:alias_method, :request_without_honeybadger, :request)
  base.send(:alias_method, :request, :request_with_honeybadger)
end

Instance Method Details

#request_with_honeybadger(*args, &block) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/honeybadger/plugins/net_http.rb', line 13

def request_with_honeybadger(*args, &block)
  request = args[0]
  uri = request.path.to_s.match(%r{https?://}) ? URI(request.path) : URI("http#{use_ssl? ? 's' : ''}://#{address}:#{port}#{request.path}")

  if uri.host.to_s.match("honeybadger.io")
    return request_without_honeybadger(*args, &block)
  end

  ActiveSupport::Notifications.instrument("net_http.request", { :uri => uri, :method => request.method }) do
    # Disable tracing during #request so that additional calls (i.e.
    # when connection wasn't started) don't result in double counting.
    Trace.ignore_events { request_without_honeybadger(*args, &block) }
  end
end