class Kangaru::Router
def controller_class
def controller_class @controller_class ||= request.controller.constantise(root: namespace) end
def initialize(namespace: Object)
def initialize(namespace: Object) @namespace = namespace end
def resolve(request)
def resolve(request) @request = request validate_controller_defined! validate_action_defined! controller_class.new(request).execute end
def validate_action_defined!
def validate_action_defined! return if controller_class.instance_methods.include?(request.action) raise "#{request.action} is not defined by #{request.controller}" end
def validate_controller_defined!
def validate_controller_defined! return if namespace.const_defined?(request.controller) raise "#{request.controller} is not defined in #{namespace}" end