1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
# frozen_string_literal: true
require 'faraday'
module FaradayMiddleware
# Public: Instruments requests using Active Support.
#
# Measures time spent only for synchronous requests.
#
# Examples
#
# ActiveSupport::Notifications.
# subscribe('request.faraday') do |name, starts, ends, _, env|
# url = env[:url]
# http_method = env[:method].to_s.upcase
# duration = ends - starts
# $stderr.puts '[%s] %s %s (%.3f s)' % [url.host,
# http_method,
# url.request_uri,
# duration]
# end
class Instrumentation < Faraday::Middleware
dependency 'active_support/notifications'
def initialize(app, options = {})
super(app)
@name = options.fetch(:name, 'request.faraday')
end
def call(env)
::ActiveSupport::Notifications.instrument(@name, env) do
@app.call(env)
end
end
end
end
|