class ControllerLoader

Public Class Methods

new(client) click to toggle source
Calls superclass method
# File lib/shot_mvc/controller_loader.rb, line 32
def initialize(client)
        super(client)
        @type = 'controller'
end

Public Instance Methods

get(controller) click to toggle source
# File lib/shot_mvc/controller_loader.rb, line 37
def get(controller)
        if controller_exists? controller
                if direct_path_to_controller? controller
                        load controller

                        controller_class_name = get_controller_class_from_path controller
                        controller_object = get_controller_object controller_class_name
                        controller_instance = controller_object.new @client

                        call_setup_method controller_object, controller_instance

                        controller_instance

                else
                        load "app/controllers/#{controller.underscore}_controller.rb"

                        controller_class_name = get_controller_class controller
                        controller_object = get_controller_object controller_class_name
                        controller_instance = controller_object.new @client

                        call_setup_method controller_object, controller_instance

                        controller_instance
                end
        else
                raise ControllerLoadException.new "Error loading controller #{controller}. Please verify that it exists at app/controllers/#{controller.underscore}.rb"
        end
end

Private Instance Methods

call_setup_method(controller_object, controller_instance) click to toggle source
# File lib/shot_mvc/controller_loader.rb, line 76
def call_setup_method(controller_object, controller_instance)
        controller_instance.send 'setup' unless not controller_object.method_defined? :setup
end
controller_exists?(controller) click to toggle source
# File lib/shot_mvc/controller_loader.rb, line 68
def controller_exists?(controller)
        File.exists? controller or File.exists? "app/controllers/#{controller.underscore}_controller.rb"
end
direct_path_to_controller?(controller) click to toggle source
# File lib/shot_mvc/controller_loader.rb, line 72
def direct_path_to_controller?(controller)
        File.exists? controller
end
get_controller_class(controller) click to toggle source
# File lib/shot_mvc/controller_loader.rb, line 84
def get_controller_class(controller)
        "#{controller}Controller"
end
get_controller_class_from_path(controller) click to toggle source
# File lib/shot_mvc/controller_loader.rb, line 88
def get_controller_class_from_path(controller)
        last_part = controller.split('/')[-1]
        last_part['.rb'] = ''
        last_part.camelize
end
get_controller_object(class_name) click to toggle source
# File lib/shot_mvc/controller_loader.rb, line 80
def get_controller_object(class_name)
        Object.const_get class_name
end