Sha256: 7f8ac55af382ee1ede1b8fe1f8827d70311be915f19077b6e4576cdd0fb0c5b0

Contents?: true

Size: 629 Bytes

Versions: 3

Compression:

Stored size: 629 Bytes

Contents

module JetsRails
  class StageMiddleware
    def initialize(app)
      @app = app
    end

    def call(env)
      add_stage_name(env) if on_aws?(env)
      status, headers, body = @app.call(env)
      [status, headers, body]
    end

  private
    # Add API Gateway Stage Name
    def add_stage_name(env)
      # changes links that Rails generates
      env[Rack::SCRIPT_NAME] = "/#{JetsRails.stage}"
    end

    def on_aws?(env)
      return true if ENV['JETS_ON_AWS'] # for local testing
      host = env['HTTP_X_FORWARDED_HOST'] # from Jets::Rack::Request#set_headers!
      host&.include?("amazonaws.com")
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jets-rails-0.3.0 lib/jets_rails/stage_middleware.rb
jets-rails-0.2.0 lib/jets_rails/stage_middleware.rb
jets-rails-0.1.0 lib/jets_rails/stage_middleware.rb