class Rack::BodyProxy
Proxy for response bodies allowing calling a block when the response body is closed (after the response has been fully sent to the client).
Public Class Methods
Set the response body to wrap, and the block to call when the response has been fully sent.
# File lib/rack/body_proxy.rb, line 10 def initialize(body, &block) @body = body @block = block @closed = false end
Public Instance Methods
If not already closed, close the wrapped body and then call the block the proxy was initialized with.
# File lib/rack/body_proxy.rb, line 23 def close return if @closed @closed = true begin @body.close if @body.respond_to? :close ensure @block.call end end
Whether the proxy is closed. The proxy starts as not closed, and becomes closed on the first call to close.
# File lib/rack/body_proxy.rb, line 35 def closed? @closed end
Delegate missing methods to the wrapped body.
# File lib/rack/body_proxy.rb, line 40 def method_missing(method_name, *args, &block) @body.__send__(method_name, *args, &block) end
Return whether the wrapped body responds to the method.
Calls superclass method
# File lib/rack/body_proxy.rb, line 17 def respond_to_missing?(method_name, include_all = false) super or @body.respond_to?(method_name, include_all) end