hot-glue 0.2.3 → 0.2.4

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
  SHA256:
3
- metadata.gz: 0a29f1b4b001de5e14dbfc1ce046aae144d53f81eb5efecb05c88a69cad06b09
4
- data.tar.gz: e4efb4c1d9d87cda11f835750475b6cfc86ea9daa4c25ce5cc08eebca1968d97
3
+ metadata.gz: 51ed0488e72bcd508f979de89c9f9d11ee1284c702c22066e72311d9cee03894
4
+ data.tar.gz: f30e2325ec4a08af8df44fa54e955b103aed04b650e2b165bcded589d2f8faa6
5
5
  SHA512:
6
- metadata.gz: 1b2b2f354390c5d2d0cef4fbd87dfee63de72b69112efc4e1c24c23037ca96f899d077b8876f81a6b8347787d3b997b1b5a7d08608c3039640003398c4974071
7
- data.tar.gz: f933f8f06deff1d2f80632ed4b2e4d9ed5ff4d70246c8c99562a15b13ece0a75b3aa9fa86e27935de4555744ee6039183d960debd89eb9bc82f6f2937ab99730
6
+ metadata.gz: 8eb5cf4982698c4b51ac9caa4c223885ea9f8c2eac423c45e11ff2c7ccbb6c8aaad0e5f43d00cdf4ef3376a04bdc5ea3477813302a1fec8cc3d82e22463a5b51
7
+ data.tar.gz: 94af84f2f7e66846e593e8ab7ac5c441fbd4b8814c1fc390823a97350fe00854f6c91868094820ca3461e28b10a671cc892430b5d86621a88ef8700376b81a87
data/.travis.yml ADDED
@@ -0,0 +1,15 @@
1
+ language: ruby
2
+
3
+ before_install:
4
+ - gem update --system
5
+
6
+
7
+ branches:
8
+ only:
9
+ - main
10
+
11
+
12
+ script: "rake spec"
13
+
14
+ rvm:
15
+ - 2.7.2
data/Gemfile CHANGED
@@ -3,8 +3,14 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
3
 
4
4
  gemspec
5
5
 
6
+ # not required for your app
6
7
  gem 'sqlite3'
7
8
  gem 'byebug'
8
-
9
9
  gem 'rails', '6.1'
10
- gem 'devise', require: true
10
+ gem 'devise', require: true
11
+
12
+
13
+ # for testing
14
+ gem "rails-controller-testing", group: [:test]
15
+ gem "database_cleaner", group: [:test]
16
+ gem "rspec-rails", group: [:test]
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hot-glue (0.2.2)
4
+ hot-glue (0.2.3)
5
5
  ffaker (~> 2.16)
6
6
  haml-rails (~> 2.0)
7
7
  kaminari (~> 1.2)
@@ -76,12 +76,19 @@ GEM
76
76
  byebug (11.1.3)
77
77
  concurrent-ruby (1.1.9)
78
78
  crass (1.0.6)
79
+ database_cleaner (2.0.1)
80
+ database_cleaner-active_record (~> 2.0.0)
81
+ database_cleaner-active_record (2.0.1)
82
+ activerecord (>= 5.a)
83
+ database_cleaner-core (~> 2.0.0)
84
+ database_cleaner-core (2.0.1)
79
85
  devise (4.8.0)
80
86
  bcrypt (~> 3.0)
81
87
  orm_adapter (~> 0.1)
82
88
  railties (>= 4.1.0)
83
89
  responders
84
90
  warden (~> 1.2.3)
91
+ diff-lcs (1.4.4)
85
92
  erubi (1.10.0)
86
93
  erubis (2.7.0)
87
94
  ffaker (2.19.0)
@@ -154,6 +161,10 @@ GEM
154
161
  bundler (>= 1.15.0)
155
162
  railties (= 6.1.0)
156
163
  sprockets-rails (>= 2.0.0)
164
+ rails-controller-testing (1.0.5)
165
+ actionpack (>= 5.0.1.rc1)
166
+ actionview (>= 5.0.1.rc1)
167
+ activesupport (>= 5.0.1.rc1)
157
168
  rails-dom-testing (2.0.3)
158
169
  activesupport (>= 4.2.0)
159
170
  nokogiri (>= 1.6)
@@ -169,6 +180,23 @@ GEM
169
180
  responders (3.0.1)
170
181
  actionpack (>= 5.0)
171
182
  railties (>= 5.0)
183
+ rspec-core (3.10.1)
184
+ rspec-support (~> 3.10.0)
185
+ rspec-expectations (3.10.1)
186
+ diff-lcs (>= 1.2.0, < 2.0)
187
+ rspec-support (~> 3.10.0)
188
+ rspec-mocks (3.10.2)
189
+ diff-lcs (>= 1.2.0, < 2.0)
190
+ rspec-support (~> 3.10.0)
191
+ rspec-rails (5.0.2)
192
+ actionpack (>= 5.2)
193
+ activesupport (>= 5.2)
194
+ railties (>= 5.2)
195
+ rspec-core (~> 3.10)
196
+ rspec-expectations (~> 3.10)
197
+ rspec-mocks (~> 3.10)
198
+ rspec-support (~> 3.10)
199
+ rspec-support (3.10.2)
172
200
  ruby_parser (3.17.0)
173
201
  sexp_processor (~> 4.15, >= 4.15.1)
174
202
  sass-rails (6.0.0)
@@ -193,7 +221,7 @@ GEM
193
221
  temple (0.8.2)
194
222
  thor (1.1.0)
195
223
  tilt (2.0.10)
196
- turbo-rails (0.7.11)
224
+ turbo-rails (0.8.1)
197
225
  rails (>= 6.0.0)
198
226
  tzinfo (2.0.4)
199
227
  concurrent-ruby (~> 1.0)
@@ -210,10 +238,13 @@ PLATFORMS
210
238
 
211
239
  DEPENDENCIES
212
240
  byebug
241
+ database_cleaner
213
242
  devise
214
243
  hot-glue!
215
244
  rails (= 6.1)
245
+ rails-controller-testing
246
+ rspec-rails
216
247
  sqlite3
217
248
 
218
249
  BUNDLED WITH
219
- 2.2.19
250
+ 2.1.4
data/README.md CHANGED
@@ -1,7 +1,17 @@
1
1
 
2
+ [![Build Status](https://app.travis-ci.com/jasonfb/hot-glue.svg?branch=main)](https://travis-ci.com/jasonfb/hot-glue)
3
+
4
+
2
5
  Hot Glue is a Rails scaffold builder for the Turbo era. It is an evolution of the admin-interface style scaffolding systems of the 2010s ([activeadmin](https://github.com/activeadmin/activeadmin), [rails_admin](https://github.com/sferik/rails_admin), and [active_scaffold](https://github.com/activescaffold/active_scaffold)).
3
6
 
4
- Using Turbo-Rails and Hotwire you get a lightning-fast out-of-the-box CRUD building experience. Every page displays only a list view: new and edit operations happen as 'edit-in-place', so the user never leaves the page.
7
+
8
+ Using Turbo-Rails and Hotwire (default in Rails 7) you get a lightning-fast out-of-the-box CRUD building experience.
9
+
10
+ Every page displays only a list view: new and edit operations happen as 'edit-in-place', so the user never leaves the page.
11
+
12
+ Because all page navigation is Turbo's responsibilty, everything plugs & plays nicely into a Turbo-backed Rails app.
13
+
14
+ Alternatively, you can use this tool to create a Turbo-backed *section* of your Rails app-- like an admin interface -- while still treating the rest of the Rails app as an API or building out other features by hand.
5
15
 
6
16
  It will read your relationships and field types to generate your code for you, leaving you with a 'sourdough starter' to work from. If you modify the generated code, you're on your own if you want to preserve your changes and also re-generate scaffold after adding fields.
7
17
 
@@ -15,7 +25,7 @@ Hot Glue generates functionality that's quick and dirty. It let's you be crafty.
15
25
  * Automatically reads your ActiveRecord models and relationships (make them before building your scaffolding!)
16
26
  * Create-read-update-delete (CRUD) with pagination (one day: sorting & searching)
17
27
  * Excellent tool for prototyping and hackathons, but a knowledge of Rails is needed.
18
- * Nest your routes model-by-model for built-in poor man's authentication. (Customers have_many :invoices; Invoices have_many :line_items; etc)
28
+ * Nest your routes model-by-model for built-in poor man's access control. (Customers have_many :invoices; Invoices have_many :line_items; etc)
19
29
  * Plays nicely with Devise, but you can implement your own current_user object instead.
20
30
  * Kaminari for pagination.
21
31
  * Create specs automatically along with the controllers.
@@ -48,14 +58,19 @@ Instantly get a simple CRUD interface
48
58
 
49
59
  - Install Turbo `rails turbo:install` (?)
50
60
 
51
- - Add `gem 'hot-glue'` to your Gemfile & `bundle install`
52
- `rails generate hot_glue:install --markup=erb`
61
+ - Add `gem 'hot-glue'` to your Gemfile
62
+ - `bundle install`
63
+ - `rails generate hot_glue:install --markup=erb` for ERB
64
+ - or `rails generate hot_glue:install --markup=haml` for HAML
53
65
 
54
66
  - Add to your `application.html.erb`
55
67
  ```
56
68
  <%= render partial: 'layouts/flash_notices' %>
57
69
  ```
58
-
70
+ - Or for Haml add to your `application.haml`
71
+ ```
72
+ = render partial: 'layouts/flash_notices'
73
+ ```
59
74
 
60
75
  ## TO INSTALL (RAILS 6)
61
76
 
@@ -114,10 +129,10 @@ FOR HAML:
114
129
  ```
115
130
 
116
131
  ## Install Bootstrap using Sprockets (IMPORTANT: YOU DO NOT NEED JQUERY*)
117
- - Bootstrap with Sprockets for Rails 5 or 7 default — Rails 6 custom
132
+ Bootstrap with Sprockets for Rails 5 or 7 default — Rails 6 custom
118
133
  - use twbs/bootstrap-rubygem gem
119
134
  - see README for bootstrap-rubygem to install
120
- - Bootstrap with Webpack for FOR RAILS 7 :
135
+ Bootstrap with Webpack for FOR RAILS 7 :
121
136
 
122
137
  - add to Gemfile
123
138
  - gem 'bootstrap', '~> 5.1.0'
@@ -229,7 +244,7 @@ Then, finally the @charge will be loaded
229
244
 
230
245
  `@charge = @line.charges.find(params[:id])`
231
246
 
232
- It's called "poor man's auth" because if a user attempts to hack the URL by passing ids for objects they don't own--- which Rails makes relatively easy with its default URL pattern-- they will hit ActiveRecord not found errors (the objects they don't own won't be found in the associated relationship).
247
+ It's called "poor man's access control" because if a user attempts to hack the URL by passing ids for objects they don't own--- which Rails makes relatively easy with its default URL pattern-- they will hit ActiveRecord not found errors (the objects they don't own won't be found in the associated relationship).
233
248
 
234
249
  It works, but it isn't granular. As well, it isn't appropriate for a large app with any level of intricacy to access control (that is, having roles).
235
250
 
@@ -242,7 +257,7 @@ By default, it will be assumed you have a `current_user` for your user authentic
242
257
 
243
258
  The poor man's auth presumes that object graphs have only one natural way to traverse them (that is, one primary way to traverse them), and that all relationships infer that a set of things or their descendants are granted access to me for reading, writing, updating, and deleting.
244
259
 
245
- Of course this is a sloppy way to do authentication, and can easily leave open endpoints your real users shouldn't have access to.
260
+ Of course this is a sloppy way to do access control, and can easily leave open endpoints your real users shouldn't have access to.
246
261
 
247
262
  When you display anything built with the scaffolding, we assume the `current_user` will have `has_many` association that matches the pluralized name of the scaffold. In the case of nesting, we will automatically find the nested objects first, then continue down the nest chain to find the target object. In this way, we know that all object are 'anchored' to the logged-in user.
248
263
 
@@ -344,9 +359,18 @@ IMPORTANT: By default, all fields that begin with an underscore (`_`) are automa
344
359
 
345
360
  I would recommend this for fields you want globally non-editable by users in your app. For example, a counter cache or other field set only by a backend mechanism.
346
361
 
347
- ### `stimulus_syntax` (default is false for Rails <=6; true for Rails 7)
362
+ ### `--stimulus_syntax=true` or `--stimulus_syntax=false`
363
+ (for Rails <=6, default is false. For Rails 7, default is true.)
364
+
365
+ Stimulus is only used for the delete button's confirmation dialog.
366
+
367
+ If you don't have stimulus syntax enabled, your delete buttons have this. This will confirm the delete with a simple alert if you have UJS enabled.
348
368
 
349
- Your delete buttons will look like so:
369
+ ```
370
+ {confirm: 'Are you sure?'}
371
+ ```
372
+
373
+ If you do have Stimulus syntax enabled, your delete buttons will look like so:
350
374
  ```
351
375
  <%= button_to "Delete <i class='fa fa-1x fa-remove'></i>".html_safe,
352
376
  thing_path(branch), method: :delete,
@@ -356,8 +380,6 @@ Your delete buttons will look like so:
356
380
  'action': 'confirmation#confirm'
357
381
  },
358
382
  disable_with: "Loading...", class: "delete-branch-button btn btn-primary " %>
359
-
360
-
361
383
  ```
362
384
 
363
385
  Your install script will output an additional stimulus controller:
@@ -416,13 +438,39 @@ Omits delete action.
416
438
 
417
439
  ### `--big-edit`
418
440
 
419
- If you do not want inline editing of your list items but instead to fall back to old fashioned new page behavior for your edit views, use `--big-edit`.
441
+ If you do not want inline editing of your list items but instead to fall back to full page style behavior for your edit views, use `--big-edit`. Turbo still handles the page interactions, but the user is taken to a full-screen edit page instead of an edit-in-place interaction.
442
+
420
443
 
444
+ ## Automatic Base Controller
421
445
 
446
+ HotGlue will copy a file named base_controller.rb to the same folder where it tries to create any controller, unless such a file exists there already.
447
+
448
+ Obviously, the created controller will always have this base controller as its subclass. In this way, you are encouraged to implement functionality common to the *namespace* (shared between the controllers in the namespace), using this technique.
449
+
450
+ ## Field Types Supported
451
+
452
+ - Integers that don't end with `_id`, they will be displayed as text fields.
453
+ - Integers that do end with `_id` will be treated automatically as associations. You should have a Rails association defined. (Hot Glue will warn you if it can't find one.)
454
+ - String*
455
+ - Text*
456
+ - Float*
457
+ - Datetime
458
+ - Date (TOOD: implement this)
459
+ - Time (TOOD: implement this)
460
+ - Boolean
461
+ - Enum - will be magically displayed as a value list populated from the enum list defined on your model. see https://jasonfleetwoodboldt.com/courses/stepping-up-rails/enumerated-types-in-rails-and-postgres/
462
+
463
+ * shows in a size-aware container, i.e. in a bigger box if the field allows for more content
422
464
 
423
465
 
424
466
 
425
467
  # VERSION HISTORY
468
+
469
+ #### 2021-10-07 - v0.2.4 - removes erroneous icons display in delete buttos (these don't work inside of button_to);
470
+ - adds support for ENUM types direclty on your field types
471
+ - you must use activerecord-pgenum
472
+ - see my blog post at https://jasonfleetwoodboldt.com/courses/stepping-up-rails/enumerated-types-in-rails-and-postgres/
473
+
426
474
  #### 2021-09-30 - v0.2.3 - fixes ERB output for show-only fields; fixes flash_notices for erb or haml; adds @stimulus_syntax flag for delete confirmations with stimulus
427
475
 
428
476
  #### 2021-09-27 - v0.2.2 - Fixes some issues with related fields; unlocks Rails 7 in Gemspec file
data/Rakefile CHANGED
@@ -1,32 +1,42 @@
1
+
1
2
  begin
2
3
  require 'bundler/setup'
3
4
  rescue LoadError
4
5
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
6
  end
6
7
 
7
- require 'rdoc/task'
8
-
9
- RDoc::Task.new(:rdoc) do |rdoc|
10
- rdoc.rdoc_dir = 'rdoc'
11
- rdoc.title = 'HotGlue'
12
- rdoc.options << '--line-numbers'
13
- rdoc.rdoc_files.include('README.md')
14
- rdoc.rdoc_files.include('lib/**/*.rb')
15
- end
16
-
17
- APP_RAKEFILE = File.expand_path("spec/dummy/Rakefile", __dir__)
18
- load 'rails/tasks/engine.rake'
19
-
20
- load 'rails/tasks/statistics.rake'
21
-
22
- require 'bundler/gem_tasks'
23
-
24
- require 'rake/testtask'
25
-
26
- Rake::TestTask.new(:test) do |t|
27
- t.libs << 'test'
28
- t.pattern = 'test/**/*_test.rb'
29
- t.verbose = false
8
+ begin
9
+ require 'rspec/core/rake_task'
10
+ RSpec::Core::RakeTask.new(:spec)
11
+ task :default => :spec
12
+ rescue LoadError
13
+ puts 'FAILED: unable to load rspec/core/rake_task in Rakefile'
30
14
  end
31
15
 
32
- task default: :test
16
+ #
17
+ # require 'rdoc/task'
18
+ #
19
+ # RDoc::Task.new(:rdoc) do |rdoc|
20
+ # rdoc.rdoc_dir = 'rdoc'
21
+ # rdoc.title = 'HotGlue'
22
+ # rdoc.options << '--line-numbers'
23
+ # rdoc.rdoc_files.include('README.md')
24
+ # rdoc.rdoc_files.include('lib/**/*.rb')
25
+ # end
26
+ #
27
+ # APP_RAKEFILE = File.expand_path("spec/dummy/Rakefile", __dir__)
28
+ # load 'rails/tasks/engine.rake'
29
+ #
30
+ # load 'rails/tasks/statistics.rake'
31
+ #
32
+ # require 'bundler/gem_tasks'
33
+
34
+ # require 'rake/testtask'
35
+ #
36
+ # Rake::TestTask.new(:test) do |t|
37
+ # t.libs << 'test'
38
+ # t.pattern = 'test/**/*_test.rb'
39
+ # t.verbose = false
40
+ # end
41
+ #
42
+ # task default: :test
@@ -1,4 +1,8 @@
1
1
  module HotGlueHelper
2
2
 
3
+ def enum_to_collection_select(hash)
4
+ hash.collect{|k,v| OpenStruct.new({key: k, value: v})}
5
+
6
+ end
3
7
 
4
8
  end
@@ -18,6 +18,11 @@ module HotGlue
18
18
  copy_file "erb/_flash_notices.erb", "#{'spec/dummy/' if Rails.env.test?}app/views/layouts/_flash_notices.erb"
19
19
 
20
20
  end
21
+
22
+ if Rails.version.split(".")[0].to_i >= 7
23
+ copy_file "confirmable.js", "#{'spec/dummy/' if Rails.env.test?}app/javascript/controllers/confirmable.js"
24
+
25
+ end
21
26
  end
22
27
  end
23
28
  end
@@ -19,7 +19,6 @@ module HotGlue
19
19
 
20
20
 
21
21
  def all_form_fields(*args)
22
-
23
22
  columns = args[0][:columns]
24
23
  show_only = args[0][:show_only]
25
24
  singular_class = args[0][:singular_class]
@@ -113,7 +112,14 @@ module HotGlue
113
112
  " <%= f.radio_button(:#{col.to_s}, '1', checked: #{singular}.#{col.to_s} ? 'checked' : '') %>\n" +
114
113
  " <%= f.label(:#{col.to_s}, value: 'Yes', for: '#{singular}_#{col.to_s}_1') %>\n" +
115
114
  "</div>"
115
+ when :enum
116
+ enum_name ="enum_name"
117
+ "<div class='#{col_identifier} form-group <%= 'alert-danger' if #{singular}.errors.details.keys.include?(:#{col.to_s}) %>' >
118
+ <%= f.collection_select(:#{col.to_s}, enum_to_collection_select( #{singular_class}.defined_enums['#{col.to_s}']), :key, :value, {prompt: true, selected: @#{singular}.#{col.to_s} }, class: 'form-control') %>
119
+ <label class='small form-text text-muted'>#{col.to_s.humanize}</label></div>"
120
+
116
121
  end
122
+
117
123
  end
118
124
  }.join("\n")
119
125
  return res
@@ -216,6 +222,14 @@ module HotGlue
216
222
  NO
217
223
  <% end %>
218
224
  </div>
225
+ " when :enum
226
+ "<div class='#{col_identifer}'>
227
+ <% if #{singular}.#{col}.nil? %>
228
+ <span class='alert-danger'>MISSING</span>
229
+ <% else %>
230
+ <%= #{singular}.#{col} %>
231
+ <% end %>
232
+ </div>
219
233
  "
220
234
  end #end of switch
221
235
  }.join("\n")
@@ -286,6 +286,8 @@ module HotGlue
286
286
  nil
287
287
  end
288
288
 
289
+
290
+
289
291
  def copy_controller_and_spec_files
290
292
  @default_colspan = @columns.size
291
293
  unless @specs_only
@@ -662,7 +664,7 @@ module HotGlue
662
664
  if !@stimulus_syntax
663
665
  "{confirm: 'Are you sure?'}"
664
666
  else
665
- "{controller: 'confirmable', 'confirm-message': \"Are you sure you want to delete \#{ @#{@singular}.#{ display_class } } \", 'action': 'confirmation#confirm'}"
667
+ "{controller: 'confirmable', 'confirm-message': \"Are you sure you want to delete \#{ #{@singular}.#{ display_class } } \", 'action': 'confirmation#confirm'}"
666
668
  end
667
669
  end
668
670
 
@@ -0,0 +1,14 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+
3
+ console.log("defining Confirmable....")
4
+ export default class extends Controller {
5
+ static values = { message: String }
6
+
7
+ confirm(event) {
8
+
9
+ if(!window.confirm(this.message)) {
10
+ event.preventDefault();
11
+ event.stopPropagation()
12
+ }
13
+ }
14
+ }
@@ -1,7 +1,7 @@
1
1
  <%= all_line_fields %>
2
2
  <div class="col">
3
3
  <% if destroy_action %>
4
- <\%= button_to "Delete <i class='fa fa-1x fa-remove'></i>".html_safe, <%= path_helper_singular %>(<%= path_helper_args %>), method: :delete, data: <%= delete_confirmation_syntax %>, disable_with: "Loading...", class: "delete-<%= singular %>-button btn btn-primary " %>
4
+ <\%= button_to "Delete".html_safe, <%= path_helper_singular %>(<%= path_helper_args %>), method: :delete, data: <%= delete_confirmation_syntax %>, disable_with: "Loading...", class: "delete-<%= singular %>-button btn btn-primary " %>
5
5
  <% end %>
6
6
  &nbsp;
7
7
  <\%= link_to "Edit <i class='fa fa-1x fa-list-alt'></i>".html_safe, edit_<%= path_helper_singular %>(<%= path_helper_args %>), <% if @big_edit %>'data-turbo' => 'false', <% end %>disable_with: "Loading...", class: "edit-<%= singular %>-button btn btn-primary " %>
@@ -1,3 +1,3 @@
1
1
  module HotGlue
2
- VERSION = '0.2.3'
2
+ VERSION = '0.2.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hot-glue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Fleetwood-Boldt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-30 00:00:00.000000000 Z
11
+ date: 2021-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -109,6 +109,7 @@ extra_rdoc_files: []
109
109
  files:
110
110
  - ".github/FUNDING.yml"
111
111
  - ".gitignore"
112
+ - ".travis.yml"
112
113
  - Gemfile
113
114
  - Gemfile.lock
114
115
  - LICENCE
@@ -133,6 +134,7 @@ files:
133
134
  - lib/generators/hot_glue/markup_templates/slim.rb
134
135
  - lib/generators/hot_glue/scaffold_generator.rb
135
136
  - lib/generators/hot_glue/templates/base_controller.rb.erb
137
+ - lib/generators/hot_glue/templates/confirmable.js
136
138
  - lib/generators/hot_glue/templates/controller.rb.erb
137
139
  - lib/generators/hot_glue/templates/erb/_errors.erb
138
140
  - lib/generators/hot_glue/templates/erb/_flash_notices.erb