::SCGI::Processor
# File lib/rack/handler/scgi.rb, line 26 26: def initialize(settings = {}) 27: @app = settings[:app] 28: super(settings) 29: end
# File lib/rack/handler/scgi.rb, line 11 11: def self.run(app, options=nil) 12: options[:Socket] = UNIXServer.new(options[:File]) if options[:File] 13: new(options.merge(:app=>app, 14: :host=>options[:Host], 15: :port=>options[:Port], 16: :socket=>options[:Socket])).listen 17: end
# File lib/rack/handler/scgi.rb, line 31 31: def process_request(request, input_body, socket) 32: env = {}.replace(request) 33: env.delete "HTTP_CONTENT_TYPE" 34: env.delete "HTTP_CONTENT_LENGTH" 35: env["REQUEST_PATH"], env["QUERY_STRING"] = env["REQUEST_URI"].split('?', 2) 36: env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"] 37: env["PATH_INFO"] = env["REQUEST_PATH"] 38: env["QUERY_STRING"] ||= "" 39: env["SCRIPT_NAME"] = "" 40: 41: rack_input = StringIO.new(input_body) 42: rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding) 43: 44: env.update({"rack.version" => Rack::VERSION, 45: "rack.input" => rack_input, 46: "rack.errors" => $stderr, 47: "rack.multithread" => true, 48: "rack.multiprocess" => true, 49: "rack.run_once" => false, 50: 51: "rack.url_scheme" => ["yes", "on", "1"].include?(env["HTTPS"]) ? "https" : "http" 52: }) 53: status, headers, body = app.call(env) 54: begin 55: socket.write("Status: #{status}\r\n") 56: headers.each do |k, vs| 57: vs.split("\n").each { |v| socket.write("#{k}: #{v}\r\n")} 58: end 59: socket.write("\r\n") 60: body.each {|s| socket.write(s)} 61: ensure 62: body.close if body.respond_to? :close 63: end 64: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.