about summary refs log tree commit homepage
path: root/lib/rainbows/tee_input.rb
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2010-05-03 17:56:00 -0700
committerEric Wong <normalperson@yhbt.net>2010-05-03 17:56:00 -0700
commitde3bcfe3ba9402bd510f7414df1763b6b99dae47 (patch)
tree180526ea73118ed9e3b0cc606684288991875b72 /lib/rainbows/tee_input.rb
parent54cae80e543a6f4ca6456fe07b88aba867d215a6 (diff)
downloadrainbows-de3bcfe3ba9402bd510f7414df1763b6b99dae47.tar.gz
WAvoid mucking with Unicorn::TeeInput, since other apps may
depend on that class, so we subclass it as Rainbows::TeeInput
and modify as necessary in worker processes.

For Revactor, remove the special-cased
Rainbows::Revactor::TeeInput class and instead emulate
readpartial for Revactor sockets instead.
Diffstat (limited to 'lib/rainbows/tee_input.rb')
-rw-r--r--lib/rainbows/tee_input.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/rainbows/tee_input.rb b/lib/rainbows/tee_input.rb
new file mode 100644
index 0000000..d405a5c
--- /dev/null
+++ b/lib/rainbows/tee_input.rb
@@ -0,0 +1,16 @@
+module Rainbows
+
+  # acts like tee(1) on an input input to provide a input-like stream
+  # while providing rewindable semantics through a File/StringIO
+  # backing store.  On the first pass, the input is only read on demand
+  # so your Rack application can use input notification (upload progress
+  # and like).  This should fully conform to the Rack::InputWrapper
+  # specification on the public API.  This class is intended to be a
+  # strict interpretation of Rack::InputWrapper functionality and will
+  # not support any deviations from it.
+  class TeeInput < Unicorn::TeeInput
+
+    # empty class, this is to avoid unecessarily modifying Unicorn::TeeInput
+    # when MaxBody::Limit is included
+  end
+end