Sha256: f325fca0d420f0de438bcab2a086d943090deee71fafe3627627deca5b7d488d

Contents?: true

Size: 941 Bytes

Versions: 2

Compression:

Stored size: 941 Bytes

Contents

# frozen_string_literal: true

require 'rails_autoscale_agent/logger'
require 'rails_autoscale_agent/store'
require 'rails_autoscale_agent/reporter'
require 'rails_autoscale_agent/config'
require 'rails_autoscale_agent/request'

module RailsAutoscaleAgent
  class Middleware
    include Logger

    def initialize(app)
      @app = app
    end

    def call(env)
      logger.tagged 'RailsAutoscale' do
        config = Config.instance
        request = Request.new(env, config)

        logger.debug "Middleware entered - request_id=#{request.id} path=#{request.path} method=#{request.method} request_size=#{request.size}"

        store = Store.instance
        Reporter.start(config, store)

        if !request.ignore? && queue_time = request.queue_time
          # NOTE: Expose queue time to the app
          env['queue_time'] = queue_time
          store.push queue_time
        end
      end

      @app.call(env)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rails_autoscale_agent-0.4.1 lib/rails_autoscale_agent/middleware.rb
rails_autoscale_agent-0.4.0 lib/rails_autoscale_agent/middleware.rb