A request handler for Rack applications.
Methods
Public Class methods
app is the Rack application object.
[ show source ]
# File lib/passenger/rack/request_handler.rb, line 43 43: def initialize(owner_pipe, app) 44: super(owner_pipe) 45: @app = app 46: end
Protected Instance methods
Overrided method.
[ show source ]
# File lib/passenger/rack/request_handler.rb, line 50 50: def process_request(env, input, output) 51: env[RACK_VERSION] = RACK_VERSION_VALUE 52: env[RACK_INPUT] = input 53: env[RACK_ERRORS] = STDERR 54: env[RACK_MULTITHREAD] = false 55: env[RACK_MULTIPROCESS] = true 56: env[RACK_RUN_ONCE] = false 57: env[SCRIPT_NAME] ||= '' 58: env[PATH_INFO].sub!(/^#{Regexp.escape(env[SCRIPT_NAME])}/, "") 59: if env[HTTPS] == YES || env[HTTPS] == ON || env[HTTPS] == ONE 60: env[RACK_URL_SCHEME] = HTTPS_DOWNCASE 61: else 62: env[RACK_URL_SCHEME] = HTTP 63: end 64: 65: status, headers, body = @app.call(env) 66: begin 67: output.write("Status: #{status}#{CRLF}") 68: headers[X_POWERED_BY] = PASSENGER_HEADER 69: headers.each do |k, vs| 70: vs.each do |v| 71: output.write("#{k}: #{v}#{CRLF}") 72: end 73: end 74: output.write(CRLF) 75: if body 76: body.each do |s| 77: output.write(s) 78: end 79: end 80: ensure 81: body.close if body.respond_to?(:close) 82: end 83: end