---
name: "rainbows"
section: "1"
platform: "linux"
package: "rainbows"
version: "5.0.0-2.1"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/rainbows"
---

# rainbows(1)

rackup-like command to launch Rainbows!

## NAME

rainbows - rackup-like command to launch Rainbows!

## SYNOPSIS

rainbows \[-c CONFIG\_FILE\] \[-E RACK\_ENV\] \[-D\] \[RACKUP\_FILE\]

## DESCRIPTION

A [rackup(1)](/rackup/1.md)-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)](/ruby/1.md) and [rackup(1)](/rackup/1.md), 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)](/rackup/1.md) and other Rack launchers, it uses the *Rack::Builder* DSL.

Embedded command-line options are mostly parsed for compatibility with [rackup(1)](/rackup/1.md) 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)](/rackup/1.md) 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)](/rackup/1.md) command, use of "-l"/"--listen" switch is recommended instead.

- **-s, --server SERVER**

  No-op, this exists only for compatibility with [rackup(1)](/rackup/1.md).

## 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)](/rackup/1.md):

- •

  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.

## SEE ALSO

- •

  [unicorn(1)](/unicorn/1.md)

- •

  *Rack::Builder* ri/RDoc

- •

  *Unicorn::Configurator* ri/RDoc

- •

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

- •

  Rack RDoc (http://rdoc.info/gems/r#/gems/rack/frames)

- •

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

## AUTHORS

Rainbows! Hackers \<rainbows-public@bogomips.org\>.
