Rainbows! is an HTTP server for sleepy Rack applications. It is based
on
Unicorn, but designed to handle applications that expect long
request/response times and/or slow clients. For Rack applications not
heavily bound by slow external network dependencies, consider Unicorn
instead as it simpler and easier to debug.
- http://rainbows.rubyforge.org/
- [email protected]
- git://git.bogomips.org/rainbows.git
Changes:
Mostly internal cleanups and small improvements.
The only backwards incompatible change was the addition of the
“client_max_body_size” parameter to limit upload sizes to
prevent DoS. This defaults to one megabyte (same as nginx), so
any apps relying on the limit-less behavior of previous will
have to configure this in the Unicorn/Rainbows! config file:
Rainbows! do
nil for unlimited, or any number in bytes
client_max_body_size nil
end
The ThreadSpawn and ThreadPool models are now optimized for serving
large static files under Ruby 1.9 using IO.copy_stream[1].
The EventMachine model has always had optimized static file
serving (using EM::Connection#stream_file_data[2]).
The EventMachine model (finally) gets conditionally deferred app
dispatch in a separate thread, as described by Ezra Z.
for Merb, Ebb and Thin[3].
[1] -
http://euruko2008.csrug.cz/system/assets/documents/0000/0007/tanaka-IOcopy_stream-euruko2008.pdf
[2] -
http://eventmachine.rubyforge.org/EventMachine/Connection.html#M000312
[3] -
http://brainspl.at/articles/2008/04/18/deferred-requests-with-merb-ebb-and-thin