(Not documented)
# File lib/rack/handler/mongrel.rb, line 37 37: def initialize(app) 38: @app = Rack::Chunked.new(Rack::ContentLength.new(app)) 39: end
(Not documented)
# File lib/rack/handler/mongrel.rb, line 9 9: def self.run(app, options={}) 10: server = ::Mongrel::HttpServer.new(options[:Host] || '0.0.0.0', 11: options[:Port] || 8080) 12: # Acts like Rack::URLMap, utilizing Mongrel's own path finding methods. 13: # Use is similar to #run, replacing the app argument with a hash of 14: # { path=>app, ... } or an instance of Rack::URLMap. 15: if options[:map] 16: if app.is_a? Hash 17: app.each do |path, appl| 18: path = '/'+path unless path[0] == ?/ 19: server.register(path, Rack::Handler::Mongrel.new(appl)) 20: end 21: elsif app.is_a? URLMap 22: app.instance_variable_get(:@mapping).each do |(host, path, appl)| 23: next if !host.nil? && !options[:Host].nil? && options[:Host] != host 24: path = '/'+path unless path[0] == ?/ 25: server.register(path, Rack::Handler::Mongrel.new(appl)) 26: end 27: else 28: raise ArgumentError, "first argument should be a Hash or URLMap" 29: end 30: else 31: server.register('/', Rack::Handler::Mongrel.new(app)) 32: end 33: yield server if block_given? 34: server.run.join 35: end
(Not documented)
# File lib/rack/handler/mongrel.rb, line 41 41: def process(request, response) 42: env = {}.replace(request.params) 43: env.delete "HTTP_CONTENT_TYPE" 44: env.delete "HTTP_CONTENT_LENGTH" 45: 46: env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/" 47: 48: env.update({"rack.version" => [0,1], 49: "rack.input" => request.body || StringIO.new(""), 50: "rack.errors" => $stderr, 51: 52: "rack.multithread" => true, 53: "rack.multiprocess" => false, # ??? 54: "rack.run_once" => false, 55: 56: "rack.url_scheme" => "http", 57: }) 58: env["QUERY_STRING"] ||= "" 59: env.delete "PATH_INFO" if env["PATH_INFO"] == "" 60: 61: status, headers, body = @app.call(env) 62: 63: begin 64: response.status = status.to_i 65: response.send_status(nil) 66: 67: headers.each { |k, vs| 68: vs.split("\n").each { |v| 69: response.header[k] = v 70: } 71: } 72: response.send_header 73: 74: body.each { |part| 75: response.write part 76: response.socket.flush 77: } 78: ensure 79: body.close if body.respond_to? :close 80: end 81: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.