class Raindrops::Middleware::Proxy

This class is used by Raindrops::Middleware to proxy application response bodies. There should be no need to use it directly.

Public Class Methods

new(body, stats) click to toggle source
# File lib/raindrops/middleware/proxy.rb, line 5
def initialize(body, stats)
  @body, @stats = body, stats
end

Public Instance Methods

close() click to toggle source

the Rack server should call this after each (usually ensure-d)

# File lib/raindrops/middleware/proxy.rb, line 15
def close
  @stats.decr_writing
  @body.close if @body.respond_to?(:close)
end
each() { |x| ... } click to toggle source

yield to the Rack server here for writing

# File lib/raindrops/middleware/proxy.rb, line 10
def each
  @body.each { |x| yield x }
end
method_missing(*args, &block) click to toggle source

Avoid breaking users of non-standard extensions (e.g. body) Rack::BodyProxy does the same.

# File lib/raindrops/middleware/proxy.rb, line 36
def method_missing(*args, &block)
  @body.__send__(*args, &block)
end
respond_to?(m) click to toggle source

Rack servers use respond_to? to check for the presence of close and to_path methods.

# File lib/raindrops/middleware/proxy.rb, line 29
def respond_to?(m)
  m = m.to_sym
  :close == m || @body.respond_to?(m)
end
to_path() click to toggle source

Some Rack servers can optimize response processing if it responds to to_path via the sendfile(2) system call, we proxy to_path to the underlying body if possible.

# File lib/raindrops/middleware/proxy.rb, line 23
def to_path
  @body.to_path
end