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)


120
121
122
# File 'lib/generators/scaffold.rb', line 120

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

#actions?(*names) ⇒ Boolean

Returns:

  • (Boolean)


124
125
126
# File 'lib/generators/scaffold.rb', line 124

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

#class_nameObject



134
135
136
# File 'lib/generators/scaffold.rb', line 134

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

#controller_name(opt = :name) ⇒ Object



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

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


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

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


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

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



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

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)


108
109
110
# File 'lib/generators/scaffold.rb', line 108

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

#has_type?(type) ⇒ Boolean

Returns:

  • (Boolean)


112
113
114
# File 'lib/generators/scaffold.rb', line 112

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

#helper_name(opt = :name) ⇒ Object



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

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



150
151
152
# File 'lib/generators/scaffold.rb', line 150

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

#instances_name(suffix = '') ⇒ Object



154
155
156
# File 'lib/generators/scaffold.rb', line 154

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

#migration_name(opt = :name) ⇒ Object



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

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



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

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

#plural_nameObject



146
147
148
# File 'lib/generators/scaffold.rb', line 146

def plural_name
  singular_name.pluralize
end

#record_or_name_or_arrayObject



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

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



158
159
160
# File 'lib/generators/scaffold.rb', line 158

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

#resources_nameObject



162
163
164
# File 'lib/generators/scaffold.rb', line 162

def resources_name
  resource_name.pluralize
end

#setting_controller_attributesObject



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

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
# 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')
           self.model_attributes << Rails::Generators::GeneratedAttribute.new(arg.split(':').first, "text")
         else
           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



130
131
132
# File 'lib/generators/scaffold.rb', line 130

def simple_name
  class_name.underscore.humanize.downcase
end

#singular_nameObject



142
143
144
# File 'lib/generators/scaffold.rb', line 142

def singular_name
  scaffold_name.underscore.singularize
end

#special_select(type) ⇒ Object



116
117
118
# File 'lib/generators/scaffold.rb', line 116

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

#table_nameObject



138
139
140
# File 'lib/generators/scaffold.rb', line 138

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