class Labkit::Middleware::Rack

This is a rack middleware to be inserted in GitLab-rails It makes sure that there's always a root context containing the correlation id. Since this context always get's cleaned up by this middleware, we can be sure that any nested contexts will also be cleaned up.

Public Class Methods

new(app) click to toggle source
# File lib/labkit/middleware/rack.rb, line 13
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/labkit/middleware/rack.rb, line 17
def call(env)
  Labkit::Context.with_context(Labkit::Context::CORRELATION_ID_KEY => correlation_id(env)) do
    @app.call(env)
  end
end

Private Instance Methods

correlation_id(env) click to toggle source
# File lib/labkit/middleware/rack.rb, line 25
def correlation_id(env)
  request(env).request_id
end
request(env) click to toggle source
# File lib/labkit/middleware/rack.rb, line 29
def request(env)
  ActionDispatch::Request.new(env)
end