Class: Rack::Timing::Reporter

Inherits:
Base
  • Object
show all
Defined in:
lib/timing/reporter.rb

Instance Method Summary collapse

Methods inherited from Base

#initialize

Methods included from Notify

#notify, #should_notify?

Constructor Details

This class inherits a constructor from Rack::Timing::Base

Instance Method Details

#call(env) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/timing/reporter.rb', line 4

def call(env)
  @metrics = {}

  status, headers, response = @app.call(env)

  measure_pre_request_time(env)
  measure("measure#rack_in", :rack_in_start, :rack_in_end, env)
  measure("measure#app", :rack_in_end, :rack_out_start, env)
  measure("measure#rack_out", :rack_out_start, :rack_out_end, env)

  @metrics = {thread_id: Thread.current.object_id, process_id: Process.pid, request_id: (env["action_dispatch.request_id"] || "")}.merge(@metrics)
  notify(@metrics) if should_notify?
  @logger.info "at=info " + @metrics.map { |k, v| "#{k}=#{v}"}.join(" ")

  [status, headers, response]
end