about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--Documentation/comparison.haml2
-rw-r--r--lib/rainbows/event_machine.rb22
2 files changed, 18 insertions, 6 deletions
diff --git a/Documentation/comparison.haml b/Documentation/comparison.haml
index 9892138..ae3348a 100644
--- a/Documentation/comparison.haml
+++ b/Documentation/comparison.haml
@@ -274,7 +274,7 @@
     %td.devfd Yes
     %td.app_pool no-op
     %td.lock no-op
-    %td.async async_sinatra
+    %td.async async_sinatra, Cramp, rack-fiber_pool
     %td.ws no
   %tr.comp_row
     %td.mod RevThreadSpawn
diff --git a/lib/rainbows/event_machine.rb b/lib/rainbows/event_machine.rb
index aacdfb5..3dd329a 100644
--- a/lib/rainbows/event_machine.rb
+++ b/lib/rainbows/event_machine.rb
@@ -8,11 +8,14 @@ module Rainbows
   # Implements a basic single-threaded event model with
   # {EventMachine}[http://rubyeventmachine.com/].  It is capable of
   # handling thousands of simultaneous client connections, but with only
-  # a single-threaded app dispatch.  It is suited for slow clients and
-  # fast applications (applications that do not have slow network
-  # dependencies) or applications that use DevFdResponse for deferrable
-  # response bodies.  It does not require your Rack application to be
-  # thread-safe, reentrancy is only required for the DevFdResponse body
+  # a single-threaded app dispatch.  It is suited for slow clients,
+  # and can work with slow applications via asynchronous libraries such as
+  # {async_sinatra}[http://github.com/raggi/async_sinatra],
+  # {Cramp}[http://m.onkey.org/2010/1/7/introducing-cramp],
+  # and {rack-fiber_pool}[http://github.com/mperham/rack-fiber_pool].
+  #
+  # It does not require your Rack application to be thread-safe,
+  # reentrancy is only required for the DevFdResponse body
   # generator.
   #
   # Compatibility: Whatever \EventMachine ~> 0.12.10 and Unicorn both
@@ -22,6 +25,15 @@ module Rainbows
   # environment such as
   # {async_sinatra}[http://github.com/raggi/async_sinatra].
   #
+  # For a complete asynchronous framework,
+  # {Cramp}[http://m.onkey.org/2010/1/7/introducing-cramp] is fully
+  # supported when using this concurrency model.
+  #
+  # This model is fully-compatible with
+  # {rack-fiber_pool}[http://github.com/mperham/rack-fiber_pool]
+  # which allows each request to run inside its own \Fiber after
+  # all request processing is complete.
+  #
   # This model does not implement as streaming "rack.input" which allows
   # the Rack application to process data as it arrives.  This means
   # "rack.input" will be fully buffered in memory or to a temporary file