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 "working_directory" 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 "/dev/null".
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 "/dev/null".
- -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 "0.0.0.0:8080" (all addresses on TCP port 8080) For
production deployments, specifying the "listen" directive in CONFIG_FILE
is recommended as it allows fine-tuning of socket options.
- -N, --no-default-middleware
-
Disables loading middleware implied by RACK_ENV.
This bypasses the configuration documented in the RACK ENVIRONMENT
section, but still allows RACK_ENV to be used for
application/framework-specific purposes.
RACKUP COMPATIBILITY OPTIONS
- -o, --host HOST
-
Listen on a TCP socket belonging to HOST, default is "0.0.0.0" (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 "-l"/"--listen" 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 "-l"/"--listen" 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 ':' 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:
- HUP - reload config file, app, and gracefully restart all workers
- INT/TERM - quick shutdown, kills all workers immediately
- QUIT - graceful shutdown, waits for workers to finish their current request before finishing.
- USR1 - reopen all logs owned by the master and all workers See Unicorn::Util.reopen_logs for what is considered a log.
- 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.
- WINCH - gracefully stops workers but keep the master running. This will only work for daemonized processes.
- TTIN - increment the number of worker processes by one
- TTOU - decrement the number of worker processes by one
See the SIGNALS (http://rainbows.bogomips.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):
- development - loads Rack::CommonLogger, Rack::ShowExceptions, and Rack::Lint middleware
- deployment - loads Rack::CommonLogger middleware
- none - loads no middleware at all, relying entirely on RACKUP_FILE
All unrecognized values for RACK_ENV are assumed to be "none". Production deployments are strongly encouraged to use "deployment" or "none" for maximum performance.
Note the Rack::ContentLength and Rack::Chunked middlewares are also loaded by "deployment" and "development", but no other values of RACK_ENV. If needed, they must be individually specified in the RACKUP_FILE, some frameworks do not require them.