app<Merb::Rack::Application> |
The app that Mongrel should handle. |
:api: plugin
# File lib/merb-core/rack/handler/mongrel.rb, line 53 def initialize(app) @app = app end
Runs the server and yields it to a block.
app<Merb::Rack::Application> |
The app that Mongrel should handle. |
options<Hash> |
Options to pass to Mongrel (see below). |
server<Mongrel::HttpServer> |
The server to run. |
:Host<String> |
The hostname on which the app should run. Defaults to “0.0.0.0” |
:Port<Fixnum> |
The port for the app. Defaults to 8080. |
:api: plugin
# File lib/merb-core/rack/handler/mongrel.rb, line 36 def self.run(app, options={}) @server = ::Mongrel::HttpServer.new(options[:Host] || '0.0.0.0', options[:Port] || 8080) @server.register('/', ::Merb::Rack::Handler::Mongrel.new(app)) yield @server if block_given? @server.run.join end
request<Merb::Request> |
The HTTP request to handle. |
response<HTTPResponse> |
The response object to write response to. |
:api: plugin
# File lib/merb-core/rack/handler/mongrel.rb, line 62 def process(request, response) env = {}.replace(request.params) env.delete Merb::Const::HTTP_CONTENT_TYPE env.delete Merb::Const::HTTP_CONTENT_LENGTH env[Merb::Const::SCRIPT_NAME] = Merb::Const::EMPTY_STRING if env[Merb::Const::SCRIPT_NAME] == Merb::Const::SLASH env.update({"rack.version" => [0,1], "rack.input" => request.body || StringIO.new(""), "rack.errors" => STDERR, "rack.multithread" => true, "rack.multiprocess" => false, # ??? "rack.run_once" => false, "rack.url_scheme" => "http" }) env[Merb::Const::QUERY_STRING] ||= "" env.delete Merb::Const::PATH_INFO if env[Merb::Const::PATH_INFO] == Merb::Const::EMPTY_STRING status, headers, body = @app.call(env) begin response.status = status.to_i response.send_status(nil) headers.each { |k, vs| vs.split(Merb::Const::NEWLINE).each { |v| response.header[k] = v } } response.send_header body.each { |part| response.write(part) response.socket.flush } response.done = true ensure body.close if body.respond_to? :close end end
Generated with the Darkfish Rdoc Generator 2.