class Panda::Application

Attributes

routes[R]

Public Class Methods

new() click to toggle source
# File lib/panda.rb, line 13
def initialize
  @routes = Routing::Router.new
end

Public Instance Methods

call(env) click to toggle source
# File lib/panda.rb, line 17
def call(env)
  return [500, {}, []] if env["PATH_INFO"] == "/favicon.ico"
  request = Rack::Request.new(env)
  handler = mapper.perform(request)
  if handler
    call_controller_action(request, handler[:target])
  else
    process_invalid_request(request)
  end
end

Private Instance Methods

call_controller_action(request, target) click to toggle source
# File lib/panda.rb, line 30
def call_controller_action(request, target)
  controller = Object.const_get("#{target[0]}Controller")
  controller.new(request).dispatch(target[1])
end
mapper() click to toggle source
# File lib/panda.rb, line 43
def mapper
  @mapper ||= Routing::Mapper.new(routes.endpoints)
end
process_invalid_request(request) click to toggle source
# File lib/panda.rb, line 35
def process_invalid_request(request)
  [
    404,
    {},
    ["Oops! No route for #{request.request_method} #{request.path_info}"]
  ]
end