Add support for the ThreadSpawn concurrency model
[rainbows.git] / README
blobdef4dceeb9a1ec6fcb464a9a366388e0db67fcc9
1 = Rainbows! Unicorn for Comet and slow clients
3 Rainbows! is a HTTP server for {Rack}[http://rack.rubyforge.org/]
4 applications.  It is based on {Unicorn}[http://unicorn.bogomips.org/],
5 but designed to handle applications that expect long request/response
6 times and/or slow clients.  It is designed for Comet applications and
7 reverse proxy implementations.  For Rack applications not heavily
8 bound by external dependencies, consider Unicorn instead as it simpler
9 and easier to debug.
11 == Features
13 * Designed for Rack, the standard for modern Ruby HTTP applications.
15 * Built on Unicorn, inheriting its process/socket management features
16   such as transparent upgrades and Ruby configuration DSL.
18 * Like Unicorn, it is able to stream large request bodies off the
19   socket to the application while the client is still uploading.
21 * Combines heavyweight concurrency (worker processes) with lightweight
22   concurrency (Actors/Threads), allowing CPU/memory/disk to be scaled
23   independently of client connections.
25 == License
27 Rainbows! is copyright 2009 Eric Wong and contributors.  It is based on
28 Mongrel and Unicorn and carries the same license.
30 Mongrel is copyright 2007 Zed A. Shaw and contributors. It is licensed
31 under the Ruby license and the GPL2. See the included LICENSE file for
32 details.
34 Rainbows! is 100% Free Software.
36 == Usage
38 === for Rack applications
40 In APP_ROOT (where config.ru is located), run:
42   rainbows
44 Rainbows! will bind to all interfaces on TCP port 8080 by default.
46 === Configuration File(s)
48 Rainbows! will look for the config.ru file used by rackup in APP_ROOT.
50 For deployments, it can use a config file for Unicorn and
51 Rainbows!-specific options specified by the +--config-file/-c+
52 command-line switch.  Rainbows! accepts all options found in
53 {Unicorn::Configurator}[http://unicorn.bogomips.org/Unicorn/Configurator.html]
54 as well as the "Rainbows!" block, so you can have the following in your
55 config file:
57     Rainbows! do
58       use :Revactor
59       worker_connections 128
60     end
62 == Development
64 * git: git://git.bogomips.org/rainbows.git
65 * cgit: http://git.bogomips.org/cgit/rainbows.git
67 Inline patches (from "git format-patch") to the mailing list are
68 preferred because they allow code review and comments in the reply to
69 the patch.
71 We will adhere to mostly the same conventions for patch submissions as
72 git itself.  See the Documentation/SubmittingPatches document
73 distributed with git on on patch submission guidelines to follow.  Just
74 don't email the git mailing list or maintainer with Rainbows! patches.
76 == Disclaimer
78 There is NO WARRANTY whatsoever if anything goes wrong, but let us know
79 and we'll try our best to fix it.
81 == Contact
83 All feedback (bug reports, user/development dicussion, patches, pull
84 requests) go to the mailing list/newsgroup.  Patches must be sent inline
85 (git format-patch -M + git send-email).  No subscription is necessary
86 to post on the mailing list.  No top posting.  Address replies +To:+ (or
87 +Cc:+) the original sender and +Cc:+ the mailing list.
89 * email: mailto:rainbows-talk@rubyforge.org
90 * archives: http://rubyforge.org/pipermail/rainbows-talk
91 * subscribe: http://rubyforge.org/mailman/listinfo/rainbows-talk