class Trashed::Rack
Constants
- GAUGES
Public Class Methods
new(app, reporter, options = {})
click to toggle source
# File lib/trashed/rack.rb, line 7 def initialize(app, reporter, options = {}) @reporter = reporter @meters = Array(options.fetch(:meters, [ResourceUsage])) @app = build_instrumented_app(app, @meters) end
Public Instance Methods
call(env)
click to toggle source
# File lib/trashed/rack.rb, line 13 def call(env) env[STATE] = { :persistent => persistent_thread_state } env[TIMINGS] = {} env[GAUGES] = [] @app.call(env).tap { @reporter.report env } end
Private Instance Methods
build_instrumented_app(app, meters)
click to toggle source
# File lib/trashed/rack.rb, line 26 def build_instrumented_app(app, meters) meters.inject app do |wrapped, meter| lambda do |env| meter.instrument! env[STATE], env[TIMINGS], env[GAUGES] do wrapped.call env end end end end
persistent_thread_state()
click to toggle source
# File lib/trashed/rack.rb, line 22 def persistent_thread_state Thread.current[:trashed_rack_state] ||= {} end