# Rainbows! 0.6.0 - bugfixes galore

**URL:** <https://www.ruby-forum.com/t/rainbows-0-6-0-bugfixes-galore/179024>\
**Category:** Ruby\
**Created:** [November 16, 2009, 12:51am UTC](https://www.ruby-forum.com/t/rainbows-0-6-0-bugfixes-galore/179024 "2009-11-16T00:51:08Z")\
**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:** [November 16, 2009, 12:51am UTC](https://www.ruby-forum.com/t/rainbows-0-6-0-bugfixes-galore/179024/1 "2009-11-16T00:51:08Z")

</div>

Rainbows! is a 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/](http://rainbows.rubyforge.org/)
- removed\_email\_address@domain.invalid
- git://git.bogomips.org/rainbows.git

Changes:

Client shutdowns/errors when streaming “rack.input” into the  
Rack application are quieter now. Rev and EventMachine workers  
now shutdown correctly when the master dies. Worker processes  
now fail gracefully if log reopening fails. ThreadSpawn and  
ThreadPool models now load Unicorn classes in a thread-safe way.

There’s also an experimental RevThreadSpawn concurrency  
model which may be heavily reworked in the future…

Eric W. (31):  
Threaded models have trouble with late loading under 1.9  
cleanup worker heartbeat and master deathwatch  
tests: allow use of alternative sha1 implementations  
rev/event\_machine: simplify keepalive checking a bit  
tests: [sha1.ru](http://sha1.ru) now handles empty bodies  
rev: split out further into separate files for reuse  
rev: DeferredResponse is independent of parser state  
remove unnecessary class variable  
ev\_core: cleanup handling of APP constant  
rev: DeferredResponse: always attach to main loop  
initial cut of the RevThreadSpawn model  
rev\_thread\_spawn/revactor: fix TeeInput for short reads  
rev\_thread\_spawn: make 1.9 TeeInput performance tolerable  
tests: add executable permissions to t0102  
tests: extra check to avoid race in reopen logs test  
rev\_thread\_spawn: 16K chunked reads work better  
tests: ensure proper accounting of worker\_connections  
tests: heartbeat-timeout: simplify and avoid possible race  
tests: ensure we process “START” from FIFO when starting  
http\_response: don’t “rescue nil” for body.close  
cleanup error handling pieces  
tests: more stringent tests for error handling  
revactor/tee\_input: unnecessary error handling  
gracefully exit workers if reopening logs fails  
revactor/tee\_input: raise ClientDisconnect on EOFError  
bump versions since we depend on Unicorn::ClientShutdown  
FAQ: updates for Rails and SSL-using sites  
revactor/tee\_input: share error handling with superclass  
RevThreadSpawn is still experimental  
Revert “Threaded models have trouble with late loading under 1.9”  
Rakefile: add raa\_update task
