Module: Fetty::Generators::Scaffold

Included in:
ScaffoldGenerator
Defined in:
lib/generators/scaffold.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object

setting variable & initialize mixins



9
10
11
12
13
# File 'lib/generators/scaffold.rb', line 9

def self.included(base)
  self.model_attributes = []
  self.controller_actions = %w[index show new create edit update destroy]
  self.special_types = {} 
end

Instance Method Details

#action?(name) ⇒ Boolean

Returns:

  • (Boolean)


122
123
124
# File 'lib/generators/scaffold.rb', line 122

def action?(name)
  self.controller_actions.include? name.to_s
end

#actions?(*names) ⇒ Boolean

Returns:

  • (Boolean)


126
127
128
# File 'lib/generators/scaffold.rb', line 126

def actions?(*names)
  names.all? { |name| action? name }
end

#class_nameObject



136
137
138
# File 'lib/generators/scaffold.rb', line 136

def class_name
  scaffold_name.split('::').last.camelize.singularize
end

#controller_name(opt = :name) ⇒ Object



186
187
188
189
190
191
192
193
# File 'lib/generators/scaffold.rb', line 186

def controller_name(opt = :name)
  case opt
  when :name
    plural_name.camelize.insert(-1,'Controller')
  when :path
    "app/controllers/#{plural_name}_controller.rb"
  end
end


65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/generators/scaffold.rb', line 65

def generate_action_links(action, authorize, object, link_text)
   out = ""
   out << "\t<% if can? :#{authorize}, #{object} %>\n\t" if using_cancan?
   
   link_path = generate_route_link(:action => action, :object => object, :suffix => 'path')
   
   unless action == :destroy
       out << "\t<%= link_to '#{link_text}', #{link_path} %>\n"
   else
       out << "\t<%= link_to '#{link_text}', #{link_path}, :confirm => 'Are you sure?', :method => :delete %>\n"
   end
   out << "\t<% end %>" if using_cancan?
   out.html_safe
rescue Exception => e
  raise e
end


82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/generators/scaffold.rb', line 82

def generate_route_link(options ={})
  case options[:action]
  when :new
    "new_#{resource_name}_#{options[:suffix]}"
  when :edit
    "edit_#{resource_name}_#{options[:suffix]}(#{options[:object]})"
  when :index
    "#{resources_name}_#{options[:suffix]}"
  else
    "#{resource_name}_#{options[:suffix]}(#{options[:object]})"
  end
rescue Exception => e
  raise e
end

#generate_routesObject

public method generator



55
56
57
58
59
60
61
62
63
# File 'lib/generators/scaffold.rb', line 55

def generate_routes
  namespaces = plural_name.split('/')
  resource = namespaces.pop
  route namespaces.reverse.inject("resources :#{resource}") { |acc, namespace|
    "namespace :#{namespace} do #{acc} end"
  }
rescue Exception => e
  raise e
end

#has_namespace?Boolean

public boolean function

Returns:

  • (Boolean)


110
111
112
# File 'lib/generators/scaffold.rb', line 110

def has_namespace?
  scaffold_name.include?('::')
end

#has_type?(type) ⇒ Boolean

Returns:

  • (Boolean)


114
115
116
# File 'lib/generators/scaffold.rb', line 114

def has_type?(type)
  self.special_types.has_value? type
end

#helper_name(opt = :name) ⇒ Object



195
196
197
198
199
200
201
202
# File 'lib/generators/scaffold.rb', line 195

def helper_name(opt = :name)
  case opt
  when :name
    plural_name.camelize.insert(-1,'Helper')
  when :path
    "app/helpers/#{plural_name}_helper.rb"
  end
end

#instance_name(suffix = '') ⇒ Object



152
153
154
# File 'lib/generators/scaffold.rb', line 152

def instance_name(suffix = '')
  suffix += singular_name.split('/').last
end

#instances_name(suffix = '') ⇒ Object



156
157
158
# File 'lib/generators/scaffold.rb', line 156

def instances_name(suffix = '')
  instance_name(suffix).pluralize
end

#migration_name(opt = :name) ⇒ Object



177
178
179
180
181
182
183
184
# File 'lib/generators/scaffold.rb', line 177

def migration_name(opt = :name)
  case opt
  when :name
    plural_name.camelize.delete('::').insert(0,'Create')
  when :path
    "db/migrate/create_#{plural_name.gsub('/', '_')}.rb"
  end
end

#model_name(opt = :name) ⇒ Object



168
169
170
171
172
173
174
175
# File 'lib/generators/scaffold.rb', line 168

def model_name(opt = :name)
  case opt
  when :name
    class_name
  when :path
    "app/models/#{class_name.downcase}.rb"
  end
end

#plural_nameObject



148
149
150
# File 'lib/generators/scaffold.rb', line 148

def plural_name
  singular_name.pluralize
end

#record_or_name_or_arrayObject



97
98
99
100
101
102
103
104
105
106
# File 'lib/generators/scaffold.rb', line 97

def record_or_name_or_array
  unless has_namespace?
    instance_name('@')
  else
    namespace = singular_name.split('/')[0..-2]
    "[:#{namespace.join(', :')}, #{instance_name('@')}]"
  end
rescue Exception => e
  raise e
end

#resource_nameObject



160
161
162
# File 'lib/generators/scaffold.rb', line 160

def resource_name
  scaffold_name.underscore.gsub('/','_').singularize
end

#resources_nameObject



164
165
166
# File 'lib/generators/scaffold.rb', line 164

def resources_name
  resource_name.pluralize
end

#setting_controller_attributesObject



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/generators/scaffold.rb', line 37

def setting_controller_attributes
  unless options.except.empty?
    options.except.each do |action|
      self.controller_actions.delete(action)
      if action == 'new'
        self.controller_actions.delete(:create)
      elsif action == 'edit'
        self.controller_actions.delete(:update)
      end
    end
  end
  self.controller_actions.uniq!
rescue Exception => e
  raise e
end

#setting_model_attributesObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/generators/scaffold.rb', line 15

def setting_model_attributes
  attributes.each do |arg|
     if arg.include?(':')
       if arg.include?(':file') || arg.include?(':image') || arg.include?(':editor')
         self.special_types[arg.split(':').first] = arg.split(':').last.to_sym
         if arg.include?(':editor')
           raise "Missing gems: ckeditor" unless check_required_gems? "ckeditor"
           self.model_attributes << Rails::Generators::GeneratedAttribute.new(arg.split(':').first, "text")
         else
           raise "Missing gems: carrierwave" unless check_required_gems? "carrierwave"
           self.model_attributes << Rails::Generators::GeneratedAttribute.new(arg.split(':').first, "string")
         end
       else
         self.model_attributes << Rails::Generators::GeneratedAttribute.new(*arg.split(':'))
       end
     end
   end
   self.model_attributes.uniq!
rescue Exception => e
  raise e
end

#simple_nameObject

playing with names



132
133
134
# File 'lib/generators/scaffold.rb', line 132

def simple_name
  class_name.underscore.humanize.downcase
end

#singular_nameObject



144
145
146
# File 'lib/generators/scaffold.rb', line 144

def singular_name
  scaffold_name.underscore.singularize
end

#special_select(type) ⇒ Object



118
119
120
# File 'lib/generators/scaffold.rb', line 118

def special_select(type)
  self.special_types.select { |k,v| v == type }.keys
end

#table_nameObject



140
141
142
# File 'lib/generators/scaffold.rb', line 140

def table_name
  scaffold_name.split('::').last.pluralize.downcase
end