SYNOPSIS

rainbows [-c CONFIG_FILE] [-E RACK_ENV] [-D] [RACKUP_FILE]

DESCRIPTION

A rackup(1)-like command to launch Rack applications using Rainbows!. It is expected to be started in your application root (APP_ROOT), but the \[lq]working_directory\[rq] directive may be used in the CONFIG_FILE.

While Rainbows! takes a myriad of command-line options for compatibility with ruby(1) and rackup(1), it is recommended to stick to the few command-line options specified in the SYNOPSIS and use the CONFIG_FILE as much as possible.

RACKUP FILE

This defaults to "config.ru" in APP_ROOT. It should be the same file used by rackup(1) and other Rack launchers, it uses the Rack::Builder DSL.

Embedded command-line options are mostly parsed for compatibility with rackup(1) but strongly discouraged.

UNICORN OPTIONS

-c, --config-file CONFIG_FILE

Path to the Unicorn-specific config file. The config file is implemented as a Ruby DSL, so Ruby code may executed. See the RDoc/ri for the Unicorn::Configurator class for the full list of directives available from the DSL.

-D, --daemonize

Run daemonized in the background. The process is detached from the controlling terminal and stdin is redirected to \[lq]/dev/null\[rq]. Unlike many common UNIX daemons, we do not chdir to "/" upon daemonization to allow more control over the startup/upgrade process. Unless specified in the CONFIG_FILE, stderr and stdout will also be redirected to \[lq]/dev/null\[rq].

-E, --env RACK_ENV

Run under the given RACK_ENV. See the RACK ENVIRONMENT section for more details.

-l, --listen ADDRESS

Listens on a given ADDRESS. ADDRESS may be in the form of HOST:PORT or PATH, HOST:PORT is taken to mean a TCP socket and PATH is meant to be a path to a UNIX domain socket. Defaults to \[lq]0.0.0.0:8080\[rq] (all addresses on TCP port 8080) For production deployments, specifying the \[lq]listen\[rq] directive in CONFIG_FILE is recommended as it allows fine-tuning of socket options.

RACKUP COMPATIBILITY OPTIONS

-o, --host HOST

Listen on a TCP socket belonging to HOST, default is \[lq]0.0.0.0\[rq] (all addresses). If specified multiple times on the command-line, only the last-specified value takes effect. This option only exists for compatibility with the rackup(1) command, use of \[lq]-l\[rq]/\[lq]--listen\[rq] switch is recommended instead.

-p, --port PORT

Listen on the specified TCP PORT, default is 8080. If specified multiple times on the command-line, only the last-specified value takes effect. This option only exists for compatibility with the rackup(1) command, use of \[lq]-l\[rq]/\[lq]--listen\[rq] switch is recommended instead.

-s, --server SERVER

No-op, this exists only for compatibility with rackup(1).

RUBY OPTIONS

-e, --eval LINE

Evaluate a LINE of Ruby code. This evaluation happens immediately as the command-line is being parsed.

-d, --debug

Turn on debug mode, the $DEBUG variable is set to true.

-w, --warn

Turn on verbose warnings, the $VERBOSE variable is set to true.

-I, --include PATH

specify $LOAD_PATH. PATH will be prepended to $LOAD_PATH. The \[aq]:\[aq] character may be used to delimit multiple directories. This directive may be used more than once. Modifications to $LOAD_PATH take place immediately and in the order they were specified on the command-line.

-r, --require LIBRARY

require a specified LIBRARY before executing the application. The "require" statement will be executed immediately and in the order they were specified on the command-line.

SIGNALS

The following UNIX signals may be sent to the master process:

\[bu]

HUP - reload config file, app, and gracefully restart all workers

\[bu]

INT/TERM - quick shutdown, kills all workers immediately

\[bu]

QUIT - graceful shutdown, waits for workers to finish their current request before finishing.

\[bu]

USR1 - reopen all logs owned by the master and all workers See Unicorn::Util.reopen_logs for what is considered a log.

\[bu]

USR2 - reexecute the running binary. A separate QUIT should be sent to the original process once the child is verified to be up and running.

\[bu]

WINCH - gracefully stops workers but keep the master running. This will only work for daemonized processes.

\[bu]

TTIN - increment the number of worker processes by one

\[bu]

TTOU - decrement the number of worker processes by one

See the SIGNALS (http://rainbows.rubyforge.org/SIGNALS.html) document for full description of all signals used by Rainbows!.

RACK ENVIRONMENT

Accepted values of RACK_ENV and the middleware they automatically load (outside of RACKUP_FILE) are exactly as those in rackup(1):

\[bu]

development - loads Rack::CommonLogger, Rack::ShowExceptions, and Rack::Lint middleware

\[bu]

deployment - loads Rack::CommonLogger middleware

\[bu]

none - loads no middleware at all, relying entirely on RACKUP_FILE

All unrecognized values for RACK_ENV are assumed to be \[lq]none\[rq]. Production deployments are strongly encouraged to use \[lq]deployment\[rq] or \[lq]none\[rq] for maximum performance.

Note that the Rack::ContentLength and Rack::Chunked middlewares are never loaded by default. If needed, they should be individually specified in the RACKUP_FILE, some frameworks do not require them.

RELATED TO rainbows…

\[bu]

unicorn(1)

\[bu]

Rack::Builder ri/RDoc

\[bu]

Unicorn::Configurator ri/RDoc

\[bu]

Rainbows! RDoc (http://rainbows.rubyforge.org/)

\[bu]

Rack RDoc (http://rack.rubyforge.org/doc/)

\[bu]

Rackup HowTo (http://wiki.github.com/rack/rack/tutorial-rackup-howto)

AUTHOR

Rainbows! Hackers <[email protected]>