Class: Rack::Lint::Wrapper::StreamWrapper

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/rack/lint.rb

Constant Summary collapse

REQUIRED_METHODS =

The semantics of these IO methods must be a best effort match to those of a normal Ruby IO or Socket object, using standard arguments and raising standard exceptions. Servers may simply pass on real IO objects to the Streaming Body. In some cases (e.g. when using transfer-encoding or HTTP/2+), the server may need to provide a wrapper that implements the required methods, in order to provide the correct semantics.

[
  :read, :write, :<<, :flush, :close,
  :close_read, :close_write, :closed?
]

Instance Method Summary collapse

Constructor Details

#initialize(stream) ⇒ StreamWrapper

Returns a new instance of StreamWrapper.



948
949
950
951
952
953
954
# File 'lib/rack/lint.rb', line 948

def initialize(stream)
  @stream = stream

  REQUIRED_METHODS.each do |method_name|
    raise LintError, "Stream must respond to #{method_name}" unless stream.respond_to?(method_name)
  end
end