# Rainbows! 0.93.0 - MOAR!1

**URL:** <https://www.ruby-forum.com/t/rainbows-0-93-0-moar-1/189346>\
**Category:** Ruby\
**Created:** [May 29, 2010, 9:00am UTC](https://www.ruby-forum.com/t/rainbows-0-93-0-moar-1/189346 "2010-05-29T09:00:29Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ericw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/97f17d/32.png) [@ericw](https://www.ruby-forum.com/u/ericw)\
**Post date:** [May 29, 2010, 9:00am UTC](https://www.ruby-forum.com/t/rainbows-0-93-0-moar-1/189346/1 "2010-05-29T09:00:29Z")

</div>

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.

Of course, if you find Unicorn too mainstream these days, then give  
Rainbows! a try! It’s the bestest web server (EVAR) with a bang in its  
name!

- [http://rainbows.rubyforge.org/](http://rainbows.rubyforge.org/)
- removed\_email\_address@domain.invalid
- git://git.bogomips.org/rainbows.git

Changes:

In our race to have more concurrency options than real sites  
using this server, we’ve added two new and fully supported  
concurrency models: WriterThreadSpawn and WriterThreadPool

They’re both designed for serving large static files and work  
best with IO.copy\_stream (sendfile!) under Ruby 1.9. They may  
also be used to dynamically generate long running, streaming  
responses after headers are sent (use “proxy\_buffering off” with  
nginx).

Unlike most concurrency options in Rainbows!, these are designed  
to run behind nginx (or haproxy if you don’t support POST/PUT  
requests) and are vulnerable to slow client denial of service  
attacks.

I floated the idea of doing something along these lines back in  
the early days of Unicorn, but deemed it too dangerous for some  
applications. But nothing is too dangerous for Rainbows! So  
here they are now for your experimentation.
