Class: BrainDamage::ControllerGenerator

Inherits:
Templateable::ClassTemplateable show all
Defined in:
lib/generators/brain_damage/lib/controller/controller_generator.rb

Instance Attribute Summary collapse

Attributes inherited from Templateable::ClassTemplateable

#current_file_name

Attributes inherited from Templateable::Base

#inner_html, #options, #template_file

Instance Method Summary collapse

Methods inherited from Templateable::ClassTemplateable

#class_definition, #extract_definitions, #leading_class_method_calls, #methods, #overwrite_method?, #private_methods, #public_methods, #remove_methods, #setup

Methods inherited from Templateable::Base

#indent, #method_missing, #render, #render_erb_file, #render_erb_string, #render_template_file

Constructor Details

#initialize(resource, options = {}) ⇒ ControllerGenerator

Returns a new instance of ControllerGenerator.



7
8
9
10
11
# File 'lib/generators/brain_damage/lib/controller/controller_generator.rb', line 7

def initialize(resource, options = {})
  @template_file = 'controller.rb'
  @set_member_before_action_list = [:show, :edit, :update, :destroy]
  super
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class BrainDamage::Templateable::Base

Instance Attribute Details

#set_member_before_action_listObject

Returns the value of attribute set_member_before_action_list.



5
6
7
# File 'lib/generators/brain_damage/lib/controller/controller_generator.rb', line 5

def set_member_before_action_list
  @set_member_before_action_list
end

Instance Method Details

#add_before_filtersObject



18
19
20
# File 'lib/generators/brain_damage/lib/controller/controller_generator.rb', line 18

def add_before_filters
  @parser.class_method_calls[:after_class_definition] << RubySimpleParser::CodeLine.new(render_erb_string('before_action :set_<%= singular_table_name %>, only: <%= set_member_before_action_list.inspect %>').indent)
end

#always_overwrite_methodsObject



36
37
38
# File 'lib/generators/brain_damage/lib/controller/controller_generator.rb', line 36

def always_overwrite_methods
  [render_erb_string("<%= singular_table_name %>_params").to_sym]
end

#attribute_white_listObject



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/generators/brain_damage/lib/controller/controller_generator.rb', line 22

def attribute_white_list
  @resource.fields.values.map(&:attr_white_list).reject(&:nil?).sort { |field_a, field_b|
    is_hash_a = (field_a.index '=>') || 0
    is_hash_b = (field_b.index '=>') || 0

    if is_hash_a == is_hash_b
      field_a <=> field_b
    else
      is_hash_a <=> is_hash_b
    end

  }.join(', ')
end

#generateObject



13
14
15
16
# File 'lib/generators/brain_damage/lib/controller/controller_generator.rb', line 13

def generate
  add_before_filters
  render
end