[ANN] Rainbows! 0.4.0 EventMachine+async_sinatra support

Eric Wong normalperson at yhbt.net
Tue Oct 27 04:58:05 EDT 2009


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

Changes:

Basic single-threaded EventMachine support is now included.  It
supports async_synatra[1] via the "async.callback" Rack
environment[2].  For EventMachine, we rely on the updated
attach/watch API in EventMachine 0.12.10.

As Revactor 0.1.5 is now available, our Revactor support now
depends on it as it adds the ability to listen on UNIX domain
sockets.

Of course, all dependencies (besides Unicorn and Rack) are
soft and only loaded if your configured concurrency model
requires it.

For developers/QA folks, the integration tests are completely
revamped for easier maintenance when new concurrency models are
introduced and should also produce TAP-compliant output.  The
test suite remains highly parallelizable using GNU make.

There are immediate plans to expand support for both Rev and
EventMachine to support use with threaded application dispatch.

Eric Wong (41):
      rev: remove Revactor-specific workaround
      README: change ordering of concurrency model listing
      tests: more correct HTTP/0.9 test
      test-lib: avoid stalling due to bad FIFO handling
      rev: fix static file responses under HTTP/0.9
      add news bodies to site NEWS.atom.xml
      tests: avoid needlessly remaking "rainbows"
      initial EventMachine support
      tests: hopefully fix stalls in input trailer tests
      tests: avoid race condition in reopen logs test
      tests: prefer "RUBY" to lowercased "ruby"
      tests: common setup and wait_start functions
      tests: add a TAP producer shell library
      tests: port all existing tests to TAP library
      tests: remove symlinks and small files, use Make
      t9000: bail if run with an unsupported/pointless model
      tests: allow "make $model" to run tests for that model
      rev: spell ECONNABORTED correctly
      rev/evma: move common code for event models into ev_core
      ev_core: do not drop deferred bodies on graceful quits
      eventmachine: get basic tests working
      rev: do not File.expand_path on result of body.to_path
      eventmachine 0.12.8 passes all tests
      tests: make large file memory tests more reliable
      eventmachine: require EM 0.12.10
      update gem dependencies in comments/local.mk.sample
      rev: enforce Rev::VERSION >= 0.3.0
      eventmachine: add async_sinatra support
      tests: only load Revactor tests under 1.9.1
      tests: gracefully exit if EventMachine is not available
      tests: error out if socat + curl aren't reachable
      thread*: fix MRI 1.8.6 compatibility
      local.mk.sample: cleanups and minor reorg
      eventmachine: remove unnecessary ivar assignment
      eventmachine: document our support of "async_synatra"
      doc: Update TODO and README
      tests: generate all dependencies atomically
      app_pool: update RDoc
      test-lib: DWIM handling of temp UNIX sockets
      revactor: require 0.1.5, remove 0.1.4 workarounds
      gemspec: bump up Unicorn dep version to 0.93.4

[1] http://github.com/raggi/async_sinatra
[2] this is not 100% Rack::Lint compatible, but we'll let it
    slide since there are already folks depending on
    the async_sinatra gem

-- 
Eric Wong


More information about the rainbows-talk mailing list