# File lib/rack/body_proxy.rb, line 3 def initialize(body, &block) @body, @block, @closed = body, block, false end
# File lib/rack/body_proxy.rb, line 12 def close return if @closed @closed = true @body.close if @body.respond_to? :close @block.call end
# File lib/rack/body_proxy.rb, line 19 def closed? @closed end
N.B. This method is a special case to address the bug described by #434. We are applying this special case for each only. Future bugs of this class will be handled by requesting users to patch their ruby implementation, to save adding too many methods in this class.
# File lib/rack/body_proxy.rb, line 27 def each(*args, &block) @body.each(*args, &block) end
# File lib/rack/body_proxy.rb, line 31 def method_missing(*args, &block) super if args.first.to_s =~ %r^to_ary$/ @body.__send__(*args, &block) end
# File lib/rack/body_proxy.rb, line 7 def respond_to?(*args) return false if args.first.to_s =~ %r^to_ary$/ super or @body.respond_to?(*args) end