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