Feature #5778


Allow WEBrick::HTTPResponse to send IO-duck-typed bodies

Added by regularfry (Alex Young) almost 10 years ago. Updated over 3 years ago.

Target version:


WEBrick::HTTPResponse currently type-checks for IO to determine how to transfer content to the outgoing socket. Because of this, it's not possible to use "IO-like" objects as data sources unless they specifically inherit from IO.

The interface HTTPResponse requires from its body objects is very simple: it only calls #read and #close, and optionally #bytesize. This means that the type-check is needlessly strict, and prevents custom objects from being used as data sources. The attached patch removes the type-check on IO, allowing duck-typed objects to be used.

The downside to this patch is that you can't pass in objects that duck-type to String's interface. It wouldn't be hard to remove that restriction if necessary, but I figured this was the less intrusive approach.


httpresponse.patch (2.76 KB) httpresponse.patch regularfry (Alex Young), 12/20/2011 02:02 AM

Updated by mame (Yusuke Endoh) over 9 years ago

  • Status changed from Open to Assigned
  • Assignee set to mame (Yusuke Endoh)

It is trivial, and the patch looks good to me.
I'll commit it unless there is objection.

Yusuke Endoh

Updated by nahi (Hiroshi Nakamura) over 9 years ago

Yusuke, you may want to assign it to me (maintainer)
I think it's good to improve, but not yet checked the patch...

Updated by mame (Yusuke Endoh) over 9 years ago

  • Assignee changed from mame (Yusuke Endoh) to nahi (Hiroshi Nakamura)

You have control.

Yusuke Endoh

Actions #4

Updated by mame (Yusuke Endoh) almost 9 years ago

  • Target version set to 2.6

Blame NaHi!

Yusuke Endoh

Actions #5

Updated by naruse (Yui NARUSE) almost 4 years ago

  • Target version deleted (2.6)

Updated by mame (Yusuke Endoh) over 3 years ago

  • Assignee changed from nahi (Hiroshi Nakamura) to normalperson (Eric Wong)

normalperson (Eric Wong), could you handle this ticket?


Also available in: Atom PDF