Files | Admin

Notes:

Release Name: 0.94.0

Notes:
\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/
* rainbows-talk@rubyforge.org
* git://git.bogomips.org/rainbows.git

Changes:

This release fixes corrupted large response bodies for Ruby 1.8
users with the WriterThreadSpawn and WriterThreadPool models
introduced in 0.93.0.  This bug did not affect Ruby 1.9 users
nor the users of any older concurrency models.

There is also a strange new Rainbows::Sendfile middleware.  It
is used to negate the effect of Rack::Contrib::Sendfile, if that
makes sense.  See the RDoc or
http://rainbows.rubyforge.org/Rainbows/Sendfile.html for all the
gory details.

Finally, the RDoc for our test suite is on the website:

  http://rainbows.rubyforge.org/Test_Suite.html

I wrote this document back when the project started but
completely forgot to tell RDoc about it.  Personally, this
test suite is one of my favorite parts of the project.



Changes: .document | 1 + .gitignore | 1 - GIT-VERSION-GEN | 2 +- GNUmakefile | 23 ++++++--- Rakefile | 21 ------- Test_Suite | 1 + config/.gitignore | 1 - config/isolate.rb | 25 --------- lib/rainbows.rb | 1 + lib/rainbows/const.rb | 2 +- lib/rainbows/sendfile.rb | 100 +++++++++++++++++++++++++++++++++++ lib/rainbows/writer_thread_pool.rb | 11 +--- lib/rainbows/writer_thread_spawn.rb | 8 +-- local.mk.sample | 72 +++++++------------------ rainbows.gemspec | 1 + t/.gitignore | 1 + t/GNUmakefile | 22 ++++---- t/README | 25 +++++++-- t/t0005-large-file-response.sh | 17 +++--- t/t0300-async_sinatra.sh | 6 ++ t/t9001-sendfile-to-path.sh | 45 ++++++++++++++++ t/t9001.ru | 11 ++++ t/test-lib.sh | 16 ++---- t/test_isolate.rb | 39 ++++++++++++++ 24 files changed, 297 insertions(+), 155 deletions(-) commit 6ada0eb9916bbcebbcf2af843c1f5fb11904caee Author: Eric Wong Date: Fri Jun 4 08:24:33 2010 +0000 Rainbows! 0.94.0 - one eight ate my homework! This release fixes corrupted large response bodies for Ruby 1.8 users with the WriterThreadSpawn and WriterThreadPool models introduced in 0.93.0. This bug did not affect Ruby 1.9 users nor the users of any older concurrency models. There is also a strange new Rainbows::Sendfile middleware. It is used to negate the effect of Rack::Contrib::Sendfile, if that makes sense. See the RDoc or http://rainbows.rubyforge.org/Rainbows/Sendfile.html for all the gory details. Finally, the RDoc for our test suite is on the website: http://rainbows.rubyforge.org/Test_Suite.html I wrote this document back when the project started but completely forgot to tell RDoc about it. Personally, this test suite is one of my favorite parts of the project. commit 761b4a346865267c3fef79a62b9bebcbf6277319 Author: Eric Wong Date: Fri Jun 4 07:48:08 2010 +0000 sendfile: update RDoc for this middleware. commit 8ac80b06424350fd6088c1363661a12620040ae8 Author: Eric Wong Date: Fri Jun 4 07:11:47 2010 +0000 doc: update test suite README and link with RDoc Apparently this document was completely forgotten over the course of development and never properly put on the website. The test suite is one of my favorite parts of Rainbows! and allows us to test the server as real clients would hit it. commit 9dd7e943707608d9c98240b33c859d3c09fac577 Author: Eric Wong Date: Fri Jun 4 06:54:52 2010 +0000 cleanup makefiles, move publish_doc into main Since the docs for this project are hosted on Rubyforge.org (currently Apache), it can't use the nginx "gzip_static on" configuration I normally use on on *.bogomips.org. I never used the irb/sh wrappers in local.mk, either, and the isolate bits have all been moved inside t/ commit 93842bb5ef9e5da1d750e41614a99024dc7a0399 Author: Eric Wong Date: Fri Jun 4 06:36:28 2010 +0000 tests: make -C $MODEL.tNNNN-foo.sh work again out-of-the box It was missing dependencies on the first run commit f66c59d7b259e5784c9da87df1a6f1dbca160577 Author: Eric Wong Date: Fri Jun 4 01:25:29 2010 +0000 tests: cleanup isolate usage We don't need tmp/ in our top level directory commit e7690caedf80a1af2b6145d1b8f108ea42ee9a29 Author: Eric Wong Date: Fri Jun 4 00:34:01 2010 +0000 tests: disable async_sinatra test for Ruby 1.9.2 Sinatra 0.9.4 does not appear to be compatible with Ruby 1.9.2... commit 8e9144341c6169abd2fa6ec20343e3152534b38b Author: Eric Wong Date: Fri Jun 4 00:32:47 2010 +0000 local.mk.sample: add a hint for TMPDIR It makes tests run significantly faster on a beefy box. commit 7ca6682fac2a30a69834b46a678ec956db4a45e9 Author: Eric Wong Date: Fri Jun 4 00:21:58 2010 +0000 local.mk.sample: update for running 1.9.2 (preview3) tests Now that 1.9.2 preview3 is available and usable, it'll be added to the list of Rubies we run and officially support. commit 50f764fcbc0ef84fd0589d16179fed637d817b19 Author: Eric Wong Date: Fri Jun 4 00:20:59 2010 +0000 Rakefile: explain ourselves when Isolating Yes there's a reason for everything we do :> commit e93d93d7deb29b09dd68abfddd8a34cec8fed9b3 Author: Eric Wong Date: Fri Jun 4 00:16:51 2010 +0000 test-lib: set NO_PROXY to counter http_proxy Some testers (like myself) use http_proxy when isolating gems to avoid wasting bandwidth, but we don't proxy requests to localhost. commit 6d62a7de86369e046e6f6b221153d867df11e74c Author: Eric Wong Date: Thu Jun 3 17:15:18 2010 -0700 depend on Isolate ~> 2.0.2 for development It's useful given all the Gems we support but don't have hard installation dependencies on. commit cf122e941e10c2812b7ba5e75c053a28950ddcb6 Author: Eric Wong Date: Thu Jun 3 15:23:01 2010 -0700 add Rainbows::Sendfile middleware This lets most concurrency models understand and process X-Sendfile efficiently with IO.copy_stream under Ruby 1.9. EventMachine can take advantage of this middleware under both Ruby 1.8 and Ruby 1.9. commit 5a0a190253434d3eef5332d979d56f3e16e876bd Author: Eric Wong Date: Thu Jun 3 14:55:37 2010 -0700 writer_thread_*: fix static file response under 1.8 While these models are designed to work with IO.copy_stream under Ruby 1.9, it should be possible to run them under Ruby 1.8 without returning corrupt responses. The large file response test is beefed up to compare SHA1 checksums of the served file, not just sizes. commit b6e354116d4da5c7c6de59f87ab5815f21e202ed Author: Eric Wong Date: Thu Jun 3 07:52:34 2010 +0000 test-lib: remove ancient wait_for_pid() function It hasn't been used since the first month of development when we started using FIFOs