class SweetActions::ActionFactory
Attributes
action[R]
controller[R]
namespace[R]
resource_name[R]
Public Class Methods
new(controller, action_name)
click to toggle source
# File lib/sweet_actions/action_factory.rb, line 5 def initialize(controller, action_name) @controller = controller path_parameters = env['action_dispatch.request.path_parameters'] @resource_name = path_parameters[:resource_name] @action = action_name @namespace = path_parameters[:namespace] end
Public Instance Methods
build_action()
click to toggle source
# File lib/sweet_actions/action_factory.rb, line 13 def build_action action_class.new(controller) end
Private Instance Methods
action_class()
click to toggle source
# File lib/sweet_actions/action_factory.rb, line 23 def action_class parts = [namespace, resource_module, action_class_name].compact klass_name = parts.join('::') return klass_name.constantize if klass_defined?(klass_name) path = parts.map(&:downcase).join('/') raise SweetActions::Exceptions::ActionNotFound, path: path, class_name: klass_name end
action_class_name()
click to toggle source
# File lib/sweet_actions/action_factory.rb, line 36 def action_class_name raise 'action is required to be passed into actionFactory' unless action.present? action.to_s.classify end
default_action()
click to toggle source
# File lib/sweet_actions/action_factory.rb, line 41 def default_action modules = namespace.split('::') class_found = false klass_name = nil until class_found || modules.count == 0 namespace_to_test = modules.join('::') target = "#{namespace_to_test}::Defaults::#{action_class_name}" if klass_defined?(target) klass_name = target class_found = true end modules.pop end return klass_name.constantize if klass_name.present? "#{action_class_name}Action".constantize end
env()
click to toggle source
# File lib/sweet_actions/action_factory.rb, line 19 def env controller.request.env end
klass_defined?(klass_name)
click to toggle source
# File lib/sweet_actions/action_factory.rb, line 59 def klass_defined?(klass_name) klass_name.constantize return true rescue return false end
resource_module()
click to toggle source
# File lib/sweet_actions/action_factory.rb, line 31 def resource_module return nil unless resource_name resource_name.pluralize end