Class: HireFire::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/hirefire/middleware.rb

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Middleware

Initializes HireFire::Middleware.

Parameters:

  • app (Proc)

    call with ‘env` to continue down the middleware stack.



10
11
12
13
14
# File 'lib/hirefire/middleware.rb', line 10

def initialize(app)
  @app         = app
  @token       = ENV["HIREFIRE_TOKEN"]
  @path_prefix = get_path_prefix
end

Instance Method Details

#call(env) ⇒ Object

Intercepts and handles the /hirefire/test, /hirefire/development/info, and /hirefire/HIREFIRE_TOKEN/info paths. If none of these paths match, then then request will continue down the middleware stack.

When HireFire::Resource.log_queue_metrics is enabled, and the HTTP_X_REQUEST_START header has been injected at the Heroku Router layer, queue time information will be logged to STDOUT. This data can be used by the HireFire Logdrain with the Web.Logplex.QueueTime autoscaling strategy.

Important: Don’t set/update instance variables within this- or any underlying methods. Doing so may result in race conditions when using threaded application servers.

Parameters:

  • env (Hash)

    containing request information.



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/hirefire/middleware.rb', line 30

def call(env)
  handle_queue(env["HTTP_X_REQUEST_START"])

  if test_path?(env["PATH_INFO"])
    build_test_response
  elsif info_path?(env["PATH_INFO"])
    build_info_response
  else
    @app.call(env)
  end
end