lib/rack/cascade.rb in rack-1.3.10 vs lib/rack/cascade.rb in rack-1.4.0
- old
+ new
@@ -2,11 +2,11 @@
# Rack::Cascade tries an request on several apps, and returns the
# first response that is not 404 (or in a list of configurable
# status codes).
class Cascade
- NotFound = [404, {}, []]
+ NotFound = [404, {"Content-Type" => "text/plain"}, []]
attr_reader :apps
def initialize(apps, catch=404)
@apps = []; @has_app = {}
@@ -17,22 +17,11 @@
end
def call(env)
result = NotFound
- last_body = nil
-
@apps.each do |app|
- # The SPEC says that the body must be closed after it has been iterated
- # by the server, or if it is replaced by a middleware action. Cascade
- # replaces the body each time a cascade happens. It is assumed that nil
- # does not respond to close, otherwise the previous application body
- # will be closed. The final application body will not be closed, as it
- # will be passed to the server as a result.
- last_body.close if last_body.respond_to? :close
-
result = app.call(env)
- last_body = result[2]
break unless @catch.include?(result[0].to_i)
end
result
end