Sha256: 002c90d2d95f7a94ef29044dff32488abf03f9677b86dd9e8374a99b62754d84

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

module LogjamAgent
  class Middleware
    def initialize(app, options={})
      @app = app
      @options = options
    end

    def call(env)
      request = start_request(env)
      result = @app.call(env)
      result[1] ||= {}
      result
    rescue Exception
      result = [500, {'Content-Type' => 'text/html'}, ["<html><body><h1>500 Internal Server Error</h1>"]]
    ensure
      headers = result[1]
      headers["X-Logjam-Request-Id"] = request.id
      headers["X-Logjam-Caller-Id"] = request.fields[:caller_id]
      finish_request(env)
    end

    private

    def start_request(env)
      app_name      = env["logjam_agent.application_name"] || LogjamAgent.application_name
      env_name      = env["logjam_agent.environment_name"] || LogjamAgent.environment_name
      caller_id     = env["HTTP_X_LOGJAM_CALLER_ID"] || ""
      caller_action = env["HTTP_X_LOGJAM_ACTION"] || ""
      Rails.logger.start_request(app_name, env_name, :caller_id => caller_id, :caller_action => caller_action)
    end

    def finish_request(env)
      Rails.logger.finish_request(env["time_bandits.metrics"])
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
logjam_agent-0.6.9 lib/logjam_agent/middleware.rb
logjam_agent-0.6.8 lib/logjam_agent/middleware.rb
logjam_agent-0.6.7 lib/logjam_agent/middleware.rb
logjam_agent-0.6.6 lib/logjam_agent/middleware.rb