Class Rack::Handler::FTW
In: lib/rack/handler/ftw.rb
lib/rack/handler/ftw.rb
Parent: Object

FTW cannot fully respect the Rack 1.1 specification due to technical limitations in the Rack design, specifically:

  • rack.input must be buffered, to support IO#rewind, for the duration of each request. This is not safe if that request is an HTTP Upgrade or a long upload.

FTW::Connection does not implement rewind. Need it? File a ticket.

To support HTTP Upgrade, CONNECT, and protocol-switching features, this server handler will set "ftw.connection" to the FTW::Connection related to this request.

The above data is based on the response to this ticket:

  https://github.com/rack/rack/issues/347

Methods

new   new   run   run   run   run   stop   stop  

Included Modules

FTW::Protocol FTW::CRLF FTW::Protocol FTW::CRLF

Constants

RACK_VERSION = [1,1]   The version of the rack specification supported by this handler.
REQUEST_METHOD = "REQUEST_METHOD".freeze   A string constant value (used to avoid typos).
SCRIPT_NAME = "SCRIPT_NAME".freeze   A string constant value (used to avoid typos).
PATH_INFO = "PATH_INFO".freeze   A string constant value (used to avoid typos).
QUERY_STRING = "QUERY_STRING".freeze   A string constant value (used to avoid typos).
SERVER_NAME = "SERVER_NAME".freeze   A string constant value (used to avoid typos).
SERVER_PORT = "SERVER_PORT".freeze   A string constant value (used to avoid typos).
RACK_DOT_VERSION = "rack.version".freeze   A string constant value (used to avoid typos).
RACK_DOT_URL_SCHEME = "rack.url_scheme".freeze   A string constant value (used to avoid typos).
RACK_DOT_INPUT = "rack.input".freeze   A string constant value (used to avoid typos).
RACK_DOT_ERRORS = "rack.errors".freeze   A string constant value (used to avoid typos).
RACK_DOT_MULTITHREAD = "rack.multithread".freeze   A string constant value (used to avoid typos).
RACK_DOT_MULTIPROCESS = "rack.multiprocess".freeze   A string constant value (used to avoid typos).
RACK_DOT_RUN_ONCE = "rack.run_once".freeze   A string constant value (used to avoid typos).
RACK_DOT_LOGGER = "rack.logger".freeze   A string constant value (used to avoid typos).
FTW_DOT_CONNECTION = "ftw.connection".freeze   A string constant value (used to avoid typos).
RACK_VERSION = [1,1]   The version of the rack specification supported by this handler.
REQUEST_METHOD = "REQUEST_METHOD".freeze   A string constant value (used to avoid typos).
SCRIPT_NAME = "SCRIPT_NAME".freeze   A string constant value (used to avoid typos).
PATH_INFO = "PATH_INFO".freeze   A string constant value (used to avoid typos).
QUERY_STRING = "QUERY_STRING".freeze   A string constant value (used to avoid typos).
SERVER_NAME = "SERVER_NAME".freeze   A string constant value (used to avoid typos).
SERVER_PORT = "SERVER_PORT".freeze   A string constant value (used to avoid typos).
RACK_DOT_VERSION = "rack.version".freeze   A string constant value (used to avoid typos).
RACK_DOT_URL_SCHEME = "rack.url_scheme".freeze   A string constant value (used to avoid typos).
RACK_DOT_INPUT = "rack.input".freeze   A string constant value (used to avoid typos).
RACK_DOT_ERRORS = "rack.errors".freeze   A string constant value (used to avoid typos).
RACK_DOT_MULTITHREAD = "rack.multithread".freeze   A string constant value (used to avoid typos).
RACK_DOT_MULTIPROCESS = "rack.multiprocess".freeze   A string constant value (used to avoid typos).
RACK_DOT_RUN_ONCE = "rack.run_once".freeze   A string constant value (used to avoid typos).
RACK_DOT_LOGGER = "rack.logger".freeze   A string constant value (used to avoid typos).
FTW_DOT_CONNECTION = "ftw.connection".freeze   A string constant value (used to avoid typos).

Public Class methods

setup a new rack server

setup a new rack server

This method is invoked when rack starts this as the server.

This method is invoked when rack starts this as the server.

Public Instance methods

Run the server.

Connections are farmed out to threads.

Run the server.

Connections are farmed out to threads.

[Validate]