Class: SimpleResourceController::Controller::ActionsBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_resource_controller/controller.rb

Constant Summary collapse

DEPENDENCIES_MAP =
{
  index:   Index,
  show:    Show,
  new:     New,
  create:  Create,
  edit:    Edit,
  update:  Update,
  destroy: Destroy
}.freeze
HELPER_METHODS =
[:resource, :collection].freeze
ALL_ACTIONS_ALIAS =
:crud

Class Method Summary collapse

Class Method Details

.build(controller_class, actions) ⇒ Object



276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
# File 'lib/simple_resource_controller/controller.rb', line 276

def self.build(controller_class, actions)
  unless actions.include?(ALL_ACTIONS_ALIAS)
    raise 'Unknown action name' unless (actions - DEPENDENCIES_MAP.keys).size.zero?
  end

  controller_class.extend Accessors

  loaded_modules = [CommonMethods]

  if actions.include?(ALL_ACTIONS_ALIAS)
    loaded_modules += DEPENDENCIES_MAP.values
  else
    loaded_modules += actions.map { |action_name| DEPENDENCIES_MAP[action_name] }
  end

  loaded_modules.uniq.each do |loaded_module|
    controller_class.include loaded_module
  end

  HELPER_METHODS.each do |method_name|
    controller_class.helper_method method_name
  end

  controller_class.respond_to :html
end