starter_generators 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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