starter_generators 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cf599273c6133063b7f98b77dd5425c6e2eb8e96
4
- data.tar.gz: 8a5b2d76d837f17906002bff44ef2b87241259dd
3
+ metadata.gz: e60cc8ced99c45a0b9b4fb3543c25a12ad91388a
4
+ data.tar.gz: e58c2767ab4a52934535b3fa8b6e2fdec74d5d91
5
5
  SHA512:
6
- metadata.gz: 2439fe58adae435e7648e178bce6754a6195a8d919102a2d624d471bd793b94520459201fea54708e2ddf073b55b079abf594e07ad8242bbd68e928cc440246d
7
- data.tar.gz: 257f7e04242e78c65096b6f44f510ed2ede41036c73034451397190a1889ae56f34a53a0b63d8c0b2660584d9d7909ecaddbef970a2333f916ad472b2e4080fe
6
+ metadata.gz: 9ac42795f1a8b130ecde47d82e116b180f812e94dab70e924edb04e73d3a8004ec2b607dc40007b500c1d709ab243f288e240a3a83510f8c18b42cfcbf88902e
7
+ data.tar.gz: 46a7cca8680805099bfde9b8d6fd044c02b711100eb5c04c27271af290dc834c14c48cb62315a0401c3926ee90d590efe1ae3cada0530923df6fa7866557988b
@@ -27,8 +27,8 @@ Description:
27
27
  in config/routes.rb.
28
28
 
29
29
  If you want to remove all the generated files, first rollback your migration
30
- if you've already run 'rake db:migrate'. Then run
31
- 'rails destroy resource ModelName'.
30
+ with 'rake db:rollback' if you've already run 'rake db:migrate'. Then run
31
+ 'rails destroy starter:resource ModelName'.
32
32
 
33
33
  Examples:
34
34
  `rails generate starter:resource post title body:text published:boolean`
@@ -13,9 +13,14 @@ module Starter
13
13
  remove_class_option :skip_namespace
14
14
  class_option :named_routes, :type => :boolean, :default => true
15
15
  class_option :styled, :type => :boolean, :default => false, desc: 'Generates bootstrap-ready view templates'
16
+ class_option :dry, :type => :boolean, :default => false, desc: 'DRYs up the controller, views, and routes'
16
17
 
17
18
  def generate_controller
18
- template 'controller.rb', "app/controllers/#{plural_name.underscore}_controller.rb"
19
+ if dry?
20
+ template 'dried/controller.rb', "app/controllers/#{plural_name.underscore}_controller.rb"
21
+ else
22
+ template 'controller.rb', "app/controllers/#{plural_name.underscore}_controller.rb"
23
+ end
19
24
  end
20
25
 
21
26
  def generate_model
@@ -39,88 +44,94 @@ module Starter
39
44
 
40
45
 
41
46
  def generate_routes
42
- if named_routes?
47
+ if dry?
48
+ route "resources :#{plural_name}", "Named RESTful routes"
49
+ elsif named_routes?
43
50
  route golden_7_named, "Named RESTful routes"
44
51
  else
45
52
  route golden_7, "RESTful routes"
46
53
  end
47
54
  end
48
55
 
49
- protected
56
+ protected
57
+
58
+ def golden_7
59
+ ["# Routes for the #{singular_name.capitalize} resource:",
60
+ " # CREATE",
61
+ " get '/#{plural_name}/new', controller: '#{plural_name}', action: 'new'",
62
+ " post '/#{plural_name}', controller: '#{plural_name}', action: 'create'",
63
+ "",
64
+ " # READ",
65
+ " get '/#{plural_name}', controller: '#{plural_name}', action: 'index'",
66
+ " get '/#{plural_name}/:id', controller: '#{plural_name}', action: 'show'",
67
+ "",
68
+ " # UPDATE",
69
+ " get '/#{plural_name}/:id/edit', controller: '#{plural_name}', action: 'edit'",
70
+ " patch '/#{plural_name}/:id', controller: '#{plural_name}', action: 'update'",
71
+ "",
72
+ " # DELETE",
73
+ " delete '/#{plural_name}/:id', controller: '#{plural_name}', action: 'destroy'",
74
+ " ##{'-' * 30}"
75
+ ].join("\n")
76
+ end
50
77
 
51
- def golden_7
52
- ["# Routes for the #{singular_name.capitalize} resource:",
78
+ def golden_7_named
79
+ ["# Routes for the #{singular_name.capitalize} resource:",
53
80
  " # CREATE",
54
- " get '/#{plural_name}/new', controller: '#{plural_name}', action: 'new'",
81
+ " get '/#{plural_name}/new', controller: '#{plural_name}', action: 'new', as: 'new_#{singular_name}'",
55
82
  " post '/#{plural_name}', controller: '#{plural_name}', action: 'create'",
56
83
  "",
57
84
  " # READ",
58
85
  " get '/#{plural_name}', controller: '#{plural_name}', action: 'index'",
59
- " get '/#{plural_name}/:id', controller: '#{plural_name}', action: 'show'",
86
+ " get '/#{plural_name}/:id', controller: '#{plural_name}', action: 'show', as: '#{singular_name}'",
60
87
  "",
61
88
  " # UPDATE",
62
- " get '/#{plural_name}/:id/edit', controller: '#{plural_name}', action: 'edit'",
89
+ " get '/#{plural_name}/:id/edit', controller: '#{plural_name}', action: 'edit', as: 'edit_#{singular_name}'",
63
90
  " patch '/#{plural_name}/:id', controller: '#{plural_name}', action: 'update'",
64
91
  "",
65
92
  " # DELETE",
66
93
  " delete '/#{plural_name}/:id', controller: '#{plural_name}', action: 'destroy'",
67
94
  " ##{'-' * 30}"
68
- ].join("\n")
69
- end
95
+ ].join("\n")
96
+ end
70
97
 
71
- def golden_7_named
72
- ["# Routes for the #{singular_name.capitalize} resource:",
73
- " # CREATE",
74
- " get '/#{plural_name}/new', controller: '#{plural_name}', action: 'new', as: 'new_#{singular_name}'",
75
- " post '/#{plural_name}', controller: '#{plural_name}', action: 'create'",
76
- "",
77
- " # READ",
78
- " get '/#{plural_name}', controller: '#{plural_name}', action: 'index'",
79
- " get '/#{plural_name}/:id', controller: '#{plural_name}', action: 'show', as: '#{singular_name}'",
80
- "",
81
- " # UPDATE",
82
- " get '/#{plural_name}/:id/edit', controller: '#{plural_name}', action: 'edit', as: 'edit_#{singular_name}'",
83
- " patch '/#{plural_name}/:id', controller: '#{plural_name}', action: 'update'",
84
- "",
85
- " # DELETE",
86
- " delete '/#{plural_name}/:id', controller: '#{plural_name}', action: 'destroy'",
87
- " ##{'-' * 30}"
88
- ].join("\n")
89
- end
98
+ def dry?
99
+ options[:dry]
100
+ end
90
101
 
91
- def named_routes?
92
- options[:named_routes]
93
- end
102
+ def named_routes?
103
+ options[:named_routes]
104
+ end
94
105
 
95
- def styled?
96
- options[:styled]
97
- end
106
+ def styled?
107
+ options[:styled]
108
+ end
98
109
 
99
- # Override of Rails::Generators::Actions
100
- def route(routing_code, title)
101
- log :route, title
102
- sentinel = /\.routes\.draw do(?:\s*\|map\|)?\s*$/
110
+ # Override of Rails::Generators::Actions
111
+ def route(routing_code, title)
112
+ log :route, title
113
+ sentinel = /\.routes\.draw do(?:\s*\|map\|)?\s*$/
103
114
 
104
- in_root do
105
- inject_into_file 'config/routes.rb', "\n #{routing_code}\n", { :after => sentinel, :verbose => false }
115
+ in_root do
116
+ inject_into_file 'config/routes.rb', "\n #{routing_code}\n", { :after => sentinel, :verbose => false }
117
+ end
106
118
  end
107
- end
108
-
109
- def attributes_with_index
110
- attributes.select { |a| a.has_index? || (a.reference? && options[:indexes]) }
111
- end
112
119
 
113
- def available_views
114
- %w(index new edit show)
115
- end
120
+ def attributes_with_index
121
+ attributes.select { |a| a.has_index? || (a.reference? && options[:indexes]) }
122
+ end
116
123
 
117
- def view_filename_with_extensions(name)
118
- filename = [name, :html, :erb].compact.join(".")
119
- if styled?
120
- filename = File.join("bootstrapped", filename)
124
+ def available_views
125
+ dry? ? %w(index new edit show _form) : %w(index new edit show)
121
126
  end
122
- filename
123
- end
124
127
 
128
+ def view_filename_with_extensions(name)
129
+ filename = [name, :html, :erb].compact.join(".")
130
+ folders = []
131
+ folders << 'dried' if dry?
132
+ folders << 'bootstrapped' if styled?
133
+ filename = File.join(folders, filename) if folders.any?
134
+ return filename
135
+ end
125
136
  end
126
137
  end
@@ -0,0 +1,13 @@
1
+ <%%= form_for @<%= singular_table_name %> do |f| %>
2
+
3
+ <% attributes.each do |attribute| -%>
4
+ <div>
5
+ <%%= f.label :<%= attribute.name %> %><br>
6
+ <%%= f.<%= attribute.field_type %> :<%= attribute.name %><%= "?" if attribute.type == :boolean %> %>
7
+ </div>
8
+
9
+ <% end -%>
10
+ <div>
11
+ <%%= f.submit %>
12
+ </div>
13
+ <%% end %>
@@ -0,0 +1,17 @@
1
+ <%%= form_for(@<%= singular_table_name %>, class: 'form-horizontal') do |f| %>
2
+
3
+ <% attributes.each do |attribute| -%>
4
+ <div class="form-group">
5
+ <%%= f.label :<%= attribute.name %>, class: 'col-md-2 control-label' %>
6
+ <div class="col-md-6">
7
+ <%%= f.<%= attribute.field_type %> :<%= attribute.name %><%= "?" if attribute.type == :boolean %>, class: 'form-control' %>
8
+ </div>
9
+ </div>
10
+
11
+ <% end -%>
12
+ <div class="form-group">
13
+ <div class="col-md-offset-2 col-md-6">
14
+ <%%= f.submit nil, class: 'btn btn-primary' %>
15
+ </div>
16
+ </div>
17
+ <%% end %>
@@ -0,0 +1,5 @@
1
+ <div class="page-header">
2
+ <h1>Editing <%= human_name.titleize %> #<%%= @<%= singular_table_name %>.id %></h1>
3
+ </div>
4
+
5
+ <%%= render 'form' %>
@@ -0,0 +1,42 @@
1
+ <div class="page-header">
2
+ <h1><%= plural_table_name.humanize %></h1>
3
+ </div>
4
+
5
+ <% if named_routes? -%>
6
+ <p><%%= link_to 'Add a New <%= human_name.titleize %>', new_<%= singular_table_name %>_url, class: 'btn btn-primary' %></p>
7
+ <% else -%>
8
+ <p><%%= link_to 'Add a New <%= human_name.titleize %>', "/<%= plural_name %>/new", class: 'btn' %></p>
9
+ <% end -%>
10
+
11
+ <table class="table table-hover">
12
+ <thead>
13
+ <tr>
14
+ <% attributes.each do |attribute| -%>
15
+ <th><%= attribute.human_name %></th>
16
+ <% end -%>
17
+ <th></th>
18
+ <th></th>
19
+ <th></th>
20
+ </tr>
21
+ </thead>
22
+
23
+ <tbody>
24
+ <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
25
+ <tr>
26
+ <% attributes.each do |attribute| -%>
27
+ <td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
28
+ <% end -%>
29
+ <% if named_routes? %>
30
+ <td><%%= link_to 'Show', <%= singular_table_name %>_url(<%= singular_table_name %>), class: 'btn' %></td>
31
+ <td><%%= link_to 'Edit', edit_<%= singular_table_name %>_url(<%= singular_table_name %>), class: 'btn' %></td>
32
+ <td><%%= link_to 'Destroy', <%= singular_table_name %>_url(<%= singular_table_name %>), method: 'delete', data: { confirm: "Do you really want to delete this <%= singular_table_name %>?" }, class: 'btn btn-danger' %></td>
33
+ <% else %>
34
+ <td><%%= link_to 'Show', "/<%= plural_name %>/#{<%= singular_table_name %>.id}", class: 'btn' %></td>
35
+ <td><%%= link_to 'Edit', "/<%= plural_name %>/#{<%= singular_table_name %>.id}/edit", class: 'btn' %></td>
36
+ <td><%%= link_to 'Destroy', "/<%= plural_name %>/#{<%= singular_table_name %>.id}", method: 'delete', data: { confirm: "Do you really want to delete this <%= singular_table_name %>?" }, class: 'btn btn-danger' %></td>
37
+ <% end %>
38
+ </tr>
39
+ <%% end %>
40
+ </body>
41
+ </table>
42
+
@@ -0,0 +1,5 @@
1
+ <div class="page-header">
2
+ <h1>New <%= human_name.titleize %></h1>
3
+ </div>
4
+
5
+ <%%= render 'form' %>
@@ -0,0 +1,11 @@
1
+ <div class="page-header">
2
+ <h1><%= human_name.titleize %> #<%%= @<%= singular_table_name %>.id %></h1>
3
+ </div>
4
+
5
+ <% attributes.each do |attribute| -%>
6
+ <p>
7
+ <b><%= attribute.human_name %>:</b>
8
+ <%%= @<%= singular_table_name %>.<%= attribute.name %> %>
9
+ </p>
10
+
11
+ <% end %>
@@ -0,0 +1,72 @@
1
+ class <%= plural_name.camelize %>Controller < ApplicationController
2
+
3
+ before_action :set_<%= singular_name.underscore %>, only: [:show, :edit, :update, :destroy]
4
+
5
+ def index
6
+ @<%= plural_name.underscore %> = <%= class_name %>.all
7
+ end
8
+
9
+ def show
10
+ end
11
+
12
+ def new
13
+ @<%= singular_name.underscore %> = <%= class_name %>.new
14
+ end
15
+
16
+ def create
17
+ @<%= singular_name.underscore %> = <%= class_name %>.new
18
+ <% attributes.each do |attribute| -%>
19
+ @<%= singular_name.underscore %>.<%= attribute.name %> = params[:<%= singular_name.underscore %>][:<%= attribute.name %>]
20
+ <% end %>
21
+ <% if named_routes? -%>
22
+ if @<%= singular_name.underscore %>.save
23
+ redirect_to <%= plural_name %>_url
24
+ else
25
+ render 'new'
26
+ end
27
+ <% else -%>
28
+ if @<%= singular_name.underscore %>.save
29
+ redirect_to "/<%= plural_name %>"
30
+ else
31
+ render 'new'
32
+ end
33
+ <% end -%>
34
+ end
35
+
36
+ def edit
37
+ end
38
+
39
+ def update
40
+ <% attributes.each do |attribute| -%>
41
+ @<%= singular_name.underscore %>.<%= attribute.name %> = params[:<%= singular_name.underscore %>][:<%= attribute.name %>]
42
+ <% end %>
43
+ <% if named_routes? -%>
44
+ if @<%= singular_name.underscore %>.save
45
+ redirect_to <%= plural_name %>_url
46
+ else
47
+ render 'new'
48
+ end
49
+ <% else -%>
50
+ if @<%= singular_name.underscore %>.save
51
+ redirect_to "/<%= plural_name %>"
52
+ else
53
+ render 'new'
54
+ end
55
+ <% end -%>
56
+ end
57
+
58
+ def destroy
59
+ @<%= singular_name.underscore %>.destroy
60
+ <% if named_routes? -%>
61
+ redirect_to <%= plural_name %>_url
62
+ <% else -%>
63
+ redirect_to "/<%= plural_name %>"
64
+ <% end -%>
65
+ end
66
+
67
+ private
68
+
69
+ def set_<%= singular_name.underscore %>
70
+ @<%= singular_name.underscore %> = <%= class_name %>.find(params[:id])
71
+ end
72
+ end
@@ -0,0 +1,3 @@
1
+ <h1>Editing <%= human_name.titleize %> #<%%= @<%= singular_table_name %>.id %></h1>
2
+
3
+ <%%= render 'form' %>
@@ -0,0 +1,40 @@
1
+ <h1><%= plural_table_name.humanize %></h1>
2
+
3
+ <% if named_routes? -%>
4
+ <p><%%= link_to 'Add a New <%= human_name.titleize %>', new_<%= singular_table_name %>_url %></p>
5
+ <% else -%>
6
+ <p><%%= link_to 'Add a New <%= human_name.titleize %>', "/<%= plural_name %>/new" %></p>
7
+ <% end -%>
8
+
9
+ <table>
10
+ <thead>
11
+ <tr>
12
+ <% attributes.each do |attribute| -%>
13
+ <th><%= attribute.human_name %></th>
14
+ <% end -%>
15
+ <th></th>
16
+ <th></th>
17
+ <th></th>
18
+ </tr>
19
+ </thead>
20
+
21
+ <tbody>
22
+ <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
23
+ <tr>
24
+ <% attributes.each do |attribute| -%>
25
+ <td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
26
+ <% end -%>
27
+ <% if named_routes? %>
28
+ <td><%%= link_to 'Show', <%= singular_table_name %>_url(<%= singular_table_name %>) %></td>
29
+ <td><%%= link_to 'Edit', edit_<%= singular_table_name %>_url(<%= singular_table_name %>) %></td>
30
+ <td><%%= link_to 'Destroy', <%= singular_table_name %>_url(<%= singular_table_name %>), method: 'delete', data: { confirm: "Do you really want to delete this <%= singular_table_name %>?" } %></td>
31
+ <% else %>
32
+ <td><%%= link_to 'Show', "/<%= plural_name %>/#{<%= singular_table_name %>.id}" %></td>
33
+ <td><%%= link_to 'Edit', "/<%= plural_name %>/#{<%= singular_table_name %>.id}/edit" %></td>
34
+ <td><%%= link_to 'Destroy', "/<%= plural_name %>/#{<%= singular_table_name %>.id}", method: 'delete', data: { confirm: "Do you really want to delete this <%= singular_table_name %>?" } %></td>
35
+ <% end %>
36
+ </tr>
37
+ <%% end %>
38
+ </tbody>
39
+ </table>
40
+
@@ -0,0 +1,3 @@
1
+ <h1>New <%= human_name.titleize %></h1>
2
+
3
+ <%%= render 'form' %>
@@ -0,0 +1,9 @@
1
+ <h1><%= human_name.titleize %> #<%%= @<%= singular_table_name %>.id %></h1>
2
+
3
+ <% attributes.each do |attribute| -%>
4
+ <p>
5
+ <b><%= attribute.human_name %>:</b>
6
+ <%%= @<%= singular_table_name %>.<%= attribute.name %> %>
7
+ </p>
8
+
9
+ <% end %>
@@ -4,13 +4,12 @@
4
4
  <meta charset="utf-8">
5
5
  <title><%= application_name %></title>
6
6
 
7
- <%%= stylesheet_link_tag "application", :media => "all" %>
8
-
9
7
  <% if bootswatch_theme? -%>
10
8
  <link href="//netdna.bootstrapcdn.com/bootswatch/3.0.0/<%= theme_name %>/bootstrap.min.css" rel="stylesheet">
11
9
  <% end -%>
12
10
  <link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css" rel="stylesheet">
13
11
 
12
+ <%%= stylesheet_link_tag "application", :media => "all" %>
14
13
  <%%= javascript_include_tag "application" %>
15
14
  <%%= csrf_meta_tags %>
16
15
 
@@ -1,3 +1,3 @@
1
1
  module StarterGenerators
2
- VERSION = "0.8.0"
2
+ VERSION = "0.9.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: starter_generators
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Cohen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-20 00:00:00.000000000 Z
11
+ date: 2013-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -59,6 +59,17 @@ files:
59
59
  - lib/generators/starter/resource/templates/bootstrapped/new.html.erb
60
60
  - lib/generators/starter/resource/templates/bootstrapped/show.html.erb
61
61
  - lib/generators/starter/resource/templates/controller.rb
62
+ - lib/generators/starter/resource/templates/dried/_form.html.erb
63
+ - lib/generators/starter/resource/templates/dried/bootstrapped/_form.html.erb
64
+ - lib/generators/starter/resource/templates/dried/bootstrapped/edit.html.erb
65
+ - lib/generators/starter/resource/templates/dried/bootstrapped/index.html.erb
66
+ - lib/generators/starter/resource/templates/dried/bootstrapped/new.html.erb
67
+ - lib/generators/starter/resource/templates/dried/bootstrapped/show.html.erb
68
+ - lib/generators/starter/resource/templates/dried/controller.rb
69
+ - lib/generators/starter/resource/templates/dried/edit.html.erb
70
+ - lib/generators/starter/resource/templates/dried/index.html.erb
71
+ - lib/generators/starter/resource/templates/dried/new.html.erb
72
+ - lib/generators/starter/resource/templates/dried/show.html.erb
62
73
  - lib/generators/starter/resource/templates/edit.html.erb
63
74
  - lib/generators/starter/resource/templates/index.html.erb
64
75
  - lib/generators/starter/resource/templates/migration.rb