Sha256: 6e937d8bd47fd820134c9a37c436467a99570592072a994733a3ae655871cc69

Contents?: true

Size: 808 Bytes

Versions: 121

Compression:

Stored size: 808 Bytes

Contents

module Rack
  # 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, {"Content-Type" => "text/plain"}, []]

    attr_reader :apps

    def initialize(apps, catch=[404, 405])
      @apps = []; @has_app = {}
      apps.each { |app| add app }

      @catch = {}
      [*catch].each { |status| @catch[status] = true }
    end

    def call(env)
      result = NotFound

      @apps.each do |app|
        result = app.call(env)
        break unless @catch.include?(result[0].to_i)
      end

      result
    end

    def add app
      @has_app[app] = true
      @apps << app
    end

    def include? app
      @has_app.include? app
    end

    alias_method :<<, :add
  end
end

Version data entries

121 entries across 102 versions & 13 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
classiccms-0.7.4 vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
classiccms-0.7.3 vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
classiccms-0.7.2 vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
classiccms-0.7.1 vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
classiccms-0.7.0 vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/cascade.rb
challah-0.9.0 vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
classiccms-0.6.9 vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.3/vendor/bundle/gems/jquery_regex-0.0.2/vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.2/vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.2/vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
jquery_regex-0.0.3 vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.3/vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.3/vendor/bundle/gems/jquery_regex-0.0.2/vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.3/vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
jquery_regex-0.0.1 vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
challah-rolls-0.2.0 vendor/bundle/gems/challah-0.8.0.pre/vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb
challah-rolls-0.2.0 vendor/bundle/gems/challah-0.8.3/vendor/bundle/gems/rack-1.4.1/lib/rack/cascade.rb