From: "mame (Yusuke Endoh)" Date: 2012-03-29T01:31:10+09:00 Subject: [ruby-core:43802] [ruby-trunk - Feature #5778][Assigned] Allow WEBrick::HTTPResponse to send IO-duck-typed bodies Issue #5778 has been updated by mame (Yusuke Endoh). 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 ---------------------------------------- Feature #5778: Allow WEBrick::HTTPResponse to send IO-duck-typed bodies https://bugs.ruby-lang.org/issues/5778#change-25307 Author: regularfry (Alex Young) Status: Assigned Priority: Normal Assignee: mame (Yusuke Endoh) Category: lib 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. -- http://bugs.ruby-lang.org/