Class: Skylight::Middleware::BodyProxy Private

Inherits:
Object
  • Object
show all
Defined in:
lib/skylight/middleware.rb

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Instance Method Summary collapse

Constructor Details

#initialize(body, &block) ⇒ BodyProxy

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of BodyProxy.



9
10
11
12
13
# File 'lib/skylight/middleware.rb', line 9

def initialize(body, &block)
  @body = body
  @block = block
  @closed = false
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(*args, &block) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



45
46
47
48
# File 'lib/skylight/middleware.rb', line 45

def method_missing(*args, &block)
  super if args.first.to_s =~ /^to_ary$/
  @body.__send__(*args, &block)
end

Instance Method Details

#closeObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



21
22
23
24
25
26
27
28
29
30
# File 'lib/skylight/middleware.rb', line 21

def close
  return if @closed

  @closed = true
  begin
    @body.close if @body.respond_to? :close
  ensure
    @block.call
  end
end

#closed?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


32
33
34
# File 'lib/skylight/middleware.rb', line 32

def closed?
  @closed
end

#eachObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

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.



41
42
43
# File 'lib/skylight/middleware.rb', line 41

def each(...)
  @body.each(...)
end

#respond_to_missing?(name, include_all = false) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


15
16
17
18
19
# File 'lib/skylight/middleware.rb', line 15

def respond_to_missing?(name, include_all = false)
  return false if name.to_s =~ /^to_ary$/

  @body.respond_to?(name, include_all)
end