class Sapp::Router

Public Class Methods

new(&block) click to toggle source
# File lib/sapp/router.rb, line 4
def initialize &block
  @apps = Array.new
  instance_eval(&block) if block
end

Public Instance Methods

apps() click to toggle source
# File lib/sapp/router.rb, line 27
def apps
  @apps
end
call(env) click to toggle source
# File lib/sapp/router.rb, line 9
def call env
  request = Rack::Request.new env
  found   = Array.new

  @apps.each do |a|
    path = a.run(request)
    found << path if path
  end

  begin
    duplicate_apps! if found.count > 1
  rescue => e
    puts e.message
  end

  found.any? ? found.first : [ 404, {}, ["Not found"] ]
end

Private Instance Methods

create(app) click to toggle source
# File lib/sapp/router.rb, line 32
def create app
  @apps << app
end
duplicate_apps!() click to toggle source
# File lib/sapp/router.rb, line 36
def duplicate_apps!
  raise %[
    It seems you have multiple applications, with duplicate
    routes.

    --> Apps: #{apps.join(', ')}

    Check those classes, and remove duplicate routes.
  ]
end