I've actually been really bugged about the rewindable requirement since it was introduced.
I like a variant of James' proposal, which would work like this:
env["rack.input"] must either be an IO that, when #read, returns the full input.
This would mean that if you #read from a non-rewindable input, you should put a StringIO in place with the read data. If you read a rewindable input, you should rewind it.
Yehuda Katz
Developer | Engine Yard
(ph) 718.877.1325
On Tue, Feb 23, 2010 at 3:30 PM, Hongli Lai
<hongli@phusion.nl> wrote:
On Feb 23, 3:30 am, James Tucker <
jftuc...@gmail.com> wrote:
> Block. This change just takes us further from async support, but it seems there's a need.
Does it really break async support? It should be possible to support
async even when #size is supported, async frameworks/apps just musn't
call #size.