class JetsRails::StageMiddleware

Public Class Methods

new(app) click to toggle source
# File lib/jets_rails/stage_middleware.rb, line 3
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/jets_rails/stage_middleware.rb, line 7
def call(env)
  add_stage_name(env) if on_aws?(env)
  status, headers, body = @app.call(env)
  [status, headers, body]
end

Private Instance Methods

add_stage_name(env) click to toggle source

Add API Gateway Stage Name

# File lib/jets_rails/stage_middleware.rb, line 15
def add_stage_name(env)
  # changes links that Rails generates
  env[Rack::SCRIPT_NAME] = "/#{JetsRails.stage}"
end
on_aws?(env) click to toggle source
# File lib/jets_rails/stage_middleware.rb, line 20
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