rainbows - rackup-like command to launch Rainbows!
Contents
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.
Name
rainbows - rackup-like command to launch 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.
Rackup Compatibility Options
-o,--hostHOST
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,--portPORT
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,--serverSERVER
No-op, this exists only for compatibility with rackup(1).
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.
Ruby Options
-e,--evalLINE
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,--includePATH
specify LOAD~P~ATH.PATHwillbeprependedtoLOAD_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,--requireLIBRARY
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.
See Also
• unicorn(1)
• Rack::Builder ri/RDoc
• Unicorn::Configurator ri/RDoc
• Rainbows! RDoc (https://yhbt.net/rainbows/)
• Rack RDoc (http://rdoc.info/gems/r#/gems/rack/frames)
• Rackup HowTo (http://wiki.github.com/rack/rack/tutorial-rackup-howto)
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 (https://yhbt.net/rainbows/SIGNALS.html) document for full description of all signals
used by Rainbows!.
Synopsis
rainbows [-c CONFIG_FILE] [-E RACK_ENV] [-D] [RACKUP_FILE]
Unicorn Options
-c,--config-fileCONFIG_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,--envRACK_ENV
Run under the given RACK_ENV. See the RACK ENVIRONMENT section for more details.
-l,--listenADDRESS
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.
