Class: RorVsWild::Plugin::Middleware

Inherits:
Object
  • Object
show all
Includes:
RequestQueueTime
Defined in:
lib/rorvswild/plugin/middleware.rb

Defined Under Namespace

Modules: RequestQueueTime

Constant Summary

Constants included from RequestQueueTime

RequestQueueTime::ACCEPTABLE_HEADERS, RequestQueueTime::DIVISORS, RequestQueueTime::MINIMUM_TIMESTAMP

Class Method Summary collapse

Instance Method Summary collapse

Methods included from RequestQueueTime

#parse_queue_time_header

Constructor Details

#initialize(app, config) ⇒ Middleware

Returns a new instance of Middleware.



57
58
59
# File 'lib/rorvswild/plugin/middleware.rb', line 57

def initialize(app, config)
  @app, @config = app, config
end

Class Method Details

.setup(agent) ⇒ Object



51
52
53
54
55
# File 'lib/rorvswild/plugin/middleware.rb', line 51

def self.setup(agent)
  return if @installed
  Rails.application.config.middleware.unshift(RorVsWild::Plugin::Middleware, nil) if defined?(Rails)
  @installed = true
end

Instance Method Details

#call(env) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/rorvswild/plugin/middleware.rb', line 61

def call(env)
  execution = RorVsWild::Execution::Request.new(env["ORIGINAL_FULLPATH"])
  execution.add_queue_time(calculate_queue_time(env))
  RorVsWild.agent.start_execution(execution)
  section = RorVsWild::Section.start
  section.file, section.line = rails_engine_location
  section.commands << "Rails::Engine#call"
  code, headers, body = @app.call(env)
  [code, headers, body]
ensure
  RorVsWild::Section.stop
  RorVsWild.agent.stop_execution
end