::SCGI::Processor
(Not documented)
# File lib/rack/handler/scgi.rb, line 18 18: def initialize(settings = {}) 19: @app = Rack::Chunked.new(Rack::ContentLength.new(settings[:app])) 20: @log = Object.new 21: def @log.info(*args); end 22: def @log.error(*args); end 23: super(settings) 24: end
(Not documented)
# File lib/rack/handler/scgi.rb, line 26 26: def process_requestprocess_requestprocess_request(request, input_body, socket) 27: env = {}.replace(request) 28: env.delete "HTTP_CONTENT_TYPE" 29: env.delete "HTTP_CONTENT_LENGTH" 30: env["REQUEST_PATH"], env["QUERY_STRING"] = env["REQUEST_URI"].split('?', 2) 31: env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"] 32: env["PATH_INFO"] = env["REQUEST_PATH"] 33: env["QUERY_STRING"] ||= "" 34: env["SCRIPT_NAME"] = "" 35: 36: rack_input = StringIO.new(input_body) 37: rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding) 38: 39: env.update({"rack.version" => [1,1], 40: "rack.input" => rack_input, 41: "rack.errors" => $stderr, 42: "rack.multithread" => true, 43: "rack.multiprocess" => true, 44: "rack.run_once" => false, 45: 46: "rack.url_scheme" => ["yes", "on", "1"].include?(env["HTTPS"]) ? "https" : "http" 47: }) 48: status, headers, body = app.call(env) 49: begin 50: socket.write("Status: #{status}\r\n") 51: headers.each do |k, vs| 52: vs.split("\n").each { |v| socket.write("#{k}: #{v}\r\n")} 53: end 54: socket.write("\r\n") 55: body.each {|s| socket.write(s)} 56: ensure 57: body.close if body.respond_to? :close 58: end 59: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.