class Skylight::Core::Middleware::BodyProxy

Public Class Methods

new(body, &block) click to toggle source
# File lib/skylight/core/middleware.rb, line 7
def initialize(body, &block)
  @body = body
  @block = block
  @closed = false
end

Public Instance Methods

close() click to toggle source
# File lib/skylight/core/middleware.rb, line 18
def close
  return if @closed
  @closed = true
  begin
    @body.close if @body.respond_to? :close
  ensure
    @block.call
  end
end
closed?() click to toggle source
# File lib/skylight/core/middleware.rb, line 28
def closed?
  @closed
end
each(*args, &block) click to toggle source

N.B. This method is a special case to address the bug described by github.com/rack/rack/issues/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/skylight/core/middleware.rb, line 37
def each(*args, &block)
  @body.each(*args, &block)
end
method_missing(*args, &block) click to toggle source
Calls superclass method
# File lib/skylight/core/middleware.rb, line 41
def method_missing(*args, &block)
  super if args.first.to_s =~ /^to_ary$/
  @body.__send__(*args, &block)
end
respond_to_missing?(*args) click to toggle source
# File lib/skylight/core/middleware.rb, line 13
def respond_to_missing?(*args)
  return false if args.first.to_s !~ /^to_ary$/
  @body.respond_to?(*args)
end