Class | Rack::Cascade |
In: |
lib/rack/cascade.rb
|
Parent: | Object |
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).
apps | [R] |
# File lib/rack/cascade.rb, line 9 9: def initialize(apps, catch=404) 10: @apps = apps 11: @catch = [*catch] 12: end
# File lib/rack/cascade.rb, line 14 14: def call(env) 15: status = headers = body = nil 16: raise ArgumentError, "empty cascade" if @apps.empty? 17: @apps.each { |app| 18: begin 19: status, headers, body = app.call(env) 20: break unless @catch.include?(status.to_i) 21: end 22: } 23: [status, headers, body] 24: end