class M2R::RackHandler
Attributes
app[RW]
Public Class Methods
new(app, connection_factory, parser)
click to toggle source
Calls superclass method
M2R::Handler::new
# File lib/m2r/rack_handler.rb, line 10 def initialize(app, connection_factory, parser) @app = app super(connection_factory, parser) end
Public Instance Methods
after_all(request, response)
click to toggle source
# File lib/m2r/rack_handler.rb, line 41 def after_all(request, response) request.free! end
process(request)
click to toggle source
# File lib/m2r/rack_handler.rb, line 15 def process(request) script_name = request.pattern.split('(', 2).first.gsub(/\/$/, '') env = { 'REQUEST_METHOD' => request.method, 'SCRIPT_NAME' => script_name, 'PATH_INFO' => request.path.gsub(script_name, ''), 'QUERY_STRING' => request.query || "", 'rack.version' => ::Rack::VERSION, 'rack.errors' => $stderr, 'rack.multithread' => false, 'rack.multiprocess' => true, 'rack.run_once' => false, 'rack.url_scheme' => request.scheme, 'rack.input' => request.body_io } env['SERVER_NAME'], env['SERVER_PORT'] = request.headers['Host'].split(':', 2) request.headers.rackify(env) status, headers, body = @app.call(env) buffer = "" body.each { |part| buffer << part } body.close if body.respond_to?(:close) return Response.new.status(status).headers(headers).body(buffer) end