rails_app_generator 0.2.12 → 0.2.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/generators/project-plan.rb +3 -1
  3. data/CHANGELOG.md +21 -0
  4. data/Rakefile +0 -2
  5. data/after_templates/addons/acts_as_list/_.rb +3 -4
  6. data/after_templates/addons/administrate/_.rb +2 -2
  7. data/after_templates/addons/administrate/app/views/layouts/_navbar.html.erb +1 -1
  8. data/after_templates/addons/{bcrypt_ruby → bcrypt}/_.rb +2 -2
  9. data/after_templates/addons/{bcrypt_ruby → bcrypt}/app/controllers/home_controller.rb +0 -0
  10. data/after_templates/addons/{bcrypt_ruby → bcrypt}/app/models/user.rb +0 -0
  11. data/after_templates/addons/{bcrypt_ruby → bcrypt}/app/views/home/index.html.erb +0 -0
  12. data/after_templates/addons/{bcrypt_ruby → bcrypt}/app/views/layouts/_footer.html.erb +0 -0
  13. data/after_templates/addons/{bcrypt_ruby → bcrypt}/app/views/layouts/_navbar.html.erb +0 -0
  14. data/after_templates/addons/{bcrypt_ruby → bcrypt}/app/views/layouts/application.html.erb +0 -0
  15. data/after_templates/addons/{bcrypt_ruby → bcrypt}/app/views/users/_form.html.erb +0 -0
  16. data/after_templates/addons/{bcrypt_ruby → bcrypt}/app/views/users/_user.html.erb +0 -0
  17. data/after_templates/addons/{bcrypt_ruby → bcrypt}/db/seeds.rb +0 -0
  18. data/after_templates/addons/browser/_.rb +0 -2
  19. data/after_templates/addons/chartkick/_.rb +0 -2
  20. data/after_templates/addons/faker/_.rb +0 -2
  21. data/after_templates/addons/hexapdf/_.rb +0 -2
  22. data/after_templates/addons/honeybadger/_.rb +0 -2
  23. data/after_templates/addons/httparty/_.rb +0 -2
  24. data/after_templates/addons/mini_magick/_.rb +0 -2
  25. data/after_templates/addons/motor_admin/_.rb +46 -0
  26. data/after_templates/addons/motor_admin/app/controllers/home_controller.rb +4 -0
  27. data/after_templates/addons/motor_admin/app/views/home/index.html.erb +3 -0
  28. data/after_templates/addons/motor_admin/app/views/layouts/_footer.html.erb +3 -0
  29. data/after_templates/addons/motor_admin/app/views/layouts/_navbar.html.erb +8 -0
  30. data/after_templates/addons/motor_admin/app/views/layouts/application.html.erb +23 -0
  31. data/after_templates/addons/motor_admin/db/seeds.rb +116 -0
  32. data/after_templates/addons/rails_html_sanitizer/_.rb +0 -2
  33. data/after_templates/addons/twilio_ruby/_.rb +0 -2
  34. data/after_templates/printspeak_bak/_.rb +0 -2
  35. data/after_templates/rag/bootstrap/_.rb +0 -2
  36. data/after_templates/rag/devise/_.rb +0 -2
  37. data/after_templates/rag/import_map/_.rb +0 -2
  38. data/after_templates/rag/simple/_.rb +0 -2
  39. data/after_templates/rag/tailwind/_.rb +0 -2
  40. data/after_templates/rag/tailwind_daisyui/_.rb +0 -2
  41. data/after_templates/rag/tailwind_emulating_bootstrap/_.rb +0 -2
  42. data/after_templates/rag/tailwind_hotwire/_.rb +0 -2
  43. data/after_templates/rag/tailwind_hotwire_flash/_.rb +0 -1
  44. data/after_templates/rag/tailwind_hotwire_form/_.rb +0 -1
  45. data/after_templates/rag/tailwind_hotwire_form_search/_.rb +0 -1
  46. data/docs/last_run/app_generator_class.json +12 -4
  47. data/docs/last_run/app_generator_data.json +8 -7
  48. data/docs/last_run/rails_options_class.json +11 -3
  49. data/docs/last_run/rails_options_data.json +8 -7
  50. data/docs/project-plan/project.drawio +53 -47
  51. data/docs/project-plan/project_done.svg +1 -1
  52. data/exe/rag +0 -1
  53. data/lib/rails_app_generator/addons/administrate.rb +0 -7
  54. data/lib/rails_app_generator/addons/{bcrypt_ruby.rb → bcrypt.rb} +3 -3
  55. data/lib/rails_app_generator/addons/motor_admin.rb +6 -3
  56. data/lib/rails_app_generator/app_generator.rb +31 -7
  57. data/lib/rails_app_generator/cli/profile.rb +1 -1
  58. data/lib/rails_app_generator/options/options_builder.rb +2 -2
  59. data/lib/rails_app_generator/rag_initializer.rb +2 -1
  60. data/lib/rails_app_generator/starter.rb +1 -12
  61. data/lib/rails_app_generator/util.rb +11 -0
  62. data/lib/rails_app_generator/version.rb +1 -1
  63. data/package-lock.json +2 -2
  64. data/package.json +1 -1
  65. data/profiles/addons/{bcrypt_ruby.json → bcrypt.json} +3 -3
  66. data/profiles/addons/motor_admin.json +15 -0
  67. data/tasks/profile.thor +0 -1
  68. data/templates/thor_task/addon/addon.tt +1 -0
  69. data/templates/thor_task/profile/app/views/home/index.html.erb.tt +1 -1
  70. metadata +21 -13
@@ -163,13 +163,15 @@ module RailsAppGenerator
163
163
  # # add(:rspec) if options[:testing_framework] == 'rspec'
164
164
  # end
165
165
 
166
- # rubocop:disable Metrics/AbcSize
166
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
167
167
  def finish_template
168
168
  puts 'finish template'
169
169
 
170
+ add_if(:administrate) # tested
170
171
  add_if(:acts_as_list)
171
172
  add_if(:annotate)
172
173
  add_if(:browser)
174
+ add_if(:bcrypt) # tested
173
175
  add_if(:chartkick)
174
176
  add_if(:continuous_integration)
175
177
  add_if(:devise)
@@ -194,7 +196,7 @@ module RailsAppGenerator
194
196
  # invoke :rails_customization
195
197
  super
196
198
  end
197
- # rubocop:enable Metrics/AbcSize
199
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
198
200
 
199
201
  def run_after_bundle_callbacks
200
202
  addon_instances.select { |addon| addon.respond_to?(:before_bundle) }.each(&:before_bundle)
@@ -247,6 +249,10 @@ module RailsAppGenerator
247
249
  run('rubocop -A --config .rubocop.yml')
248
250
  end
249
251
 
252
+ def rubocop_minimal
253
+ run('rubocop -A --format worst --config .rubocop.yml')
254
+ end
255
+
250
256
  def db_migrate
251
257
  rails_command('db:migrate')
252
258
  end
@@ -259,18 +265,27 @@ module RailsAppGenerator
259
265
  generate(:stimulus, name, *args)
260
266
  end
261
267
 
268
+ def prepare_environment
269
+ bundle_add('pry')
270
+ bundle_install
271
+ end
272
+
262
273
  def bundle_install
263
- Bundler.with_unbundled_env do
274
+ Util.bundler_environment(environment_style: :unbundled_env) do
264
275
  run('bundle install')
265
276
  end
266
277
  end
267
278
 
268
279
  def bundle_add(name)
269
- run("bundle add #{name}")
280
+ Util.bundler_environment(environment_style: :unbundled_env) do
281
+ run("bundle add #{name}")
282
+ end
270
283
  end
271
284
 
272
285
  def bundle_exec(name, *args)
273
- run("bundle exec #{name} #{args.join(' ')}")
286
+ Util.bundler_environment(environment_style: :unbundled_env) do
287
+ run("bundle exec #{name} #{args.join(' ')}")
288
+ end
274
289
  end
275
290
 
276
291
  # If you need to manually install tailwind (instead of using the --template option)
@@ -289,10 +304,15 @@ module RailsAppGenerator
289
304
  pin(name, *args)
290
305
  end
291
306
 
292
- def copy_file(source, destination, **args)
307
+ # copy_file in railties and copy_file in thor have different signatures
308
+ # I may want to remove this method because it just causes pain at the moment
309
+ def copy_file(source, destination, args = {})
310
+ # puts source
311
+ # puts destination
312
+ # puts args
293
313
  args = { force: true }.merge(args) if force_copy?
294
314
 
295
- super(source, destination, **args)
315
+ super(source, destination, args)
296
316
  end
297
317
 
298
318
  def template(source, *args, &block)
@@ -421,6 +441,10 @@ module RailsAppGenerator
421
441
  def addon_gemfile_entries
422
442
  active_addon_classes.flat_map(&:gem_entries)
423
443
  end
444
+
445
+ def capture_console(&block)
446
+ Util.capture_console(&block)
447
+ end
424
448
  end
425
449
 
426
450
  protected
@@ -28,7 +28,7 @@ module RailsAppGenerator
28
28
 
29
29
  RailsAppGenerator::Util.write_last_run('rails_options_data.json', opts.to_h)
30
30
 
31
- starter = RailsAppGenerator::Starter.new(args)
31
+ starter = RailsAppGenerator::Starter.new(**args)
32
32
 
33
33
  starter.delete_target_folder
34
34
  starter.start(opts)
@@ -25,7 +25,7 @@ module RailsAppGenerator
25
25
  #
26
26
  # This is so options can be used interchangeably between OptionsBuilder and Thor.
27
27
  def class_option(name, **args)
28
- option = BuildOption.new(name, args)
28
+ option = BuildOption.new(name, **args)
29
29
 
30
30
  add_class_option(option)
31
31
  end
@@ -48,7 +48,7 @@ module RailsAppGenerator
48
48
  default: thor_option.default,
49
49
  required: thor_option.required
50
50
  }
51
- option = BuildOption.new(thor_option.name, args)
51
+ option = BuildOption.new(thor_option.name, **args)
52
52
 
53
53
  add_class_option(option)
54
54
  end
@@ -109,7 +109,7 @@ KConfig.configure do |config|
109
109
  rag.add_option :add_acts_as_list , type: :boolean, default: false
110
110
  rag.add_option :add_administrate , type: :boolean, default: false
111
111
  rag.add_option :add_browser , type: :boolean, default: false
112
- rag.add_option :add_bcrypt_ruby , type: :boolean, default: false
112
+ rag.add_option :add_bcrypt , type: :boolean, default: false
113
113
  rag.add_option :add_chartkick , type: :boolean, default: false
114
114
  rag.add_option :add_faker , type: :boolean, default: false
115
115
  rag.add_option :add_groupdate , type: :boolean, default: false
@@ -117,6 +117,7 @@ KConfig.configure do |config|
117
117
  rag.add_option :add_httparty , type: :boolean, default: false
118
118
  rag.add_option :add_honeybadger , type: :boolean, default: false
119
119
  rag.add_option :add_mini_magick , type: :boolean, default: false
120
+ rag.add_option :add_motor_admin , type: :boolean, default: false
120
121
  rag.add_option :add_phony_rails , type: :boolean, default: false
121
122
  rag.add_option :add_public_suffix , type: :boolean, default: false
122
123
  rag.add_option :add_rails_html_sanitizer , type: :boolean, default: false
@@ -50,7 +50,7 @@ module RailsAppGenerator
50
50
  opts = extract_rails_options(app_path, options)
51
51
 
52
52
  if capture_output
53
- @console_output = capture_console do
53
+ @console_output = Util.capture_console do
54
54
  RailsAppGenerator::AppGenerator.start(opts, destination_root: destination_root)
55
55
  end
56
56
  else
@@ -64,17 +64,6 @@ module RailsAppGenerator
64
64
 
65
65
  private
66
66
 
67
- def capture_console
68
- $stdout = StringIO.new
69
- yield
70
- output = $stdout.string
71
- $stdout.close
72
- output
73
- ensure
74
- $stdout = STDOUT
75
- $stdout.puts output
76
- end
77
-
78
67
  # Rails options returns a flat array of options
79
68
  #
80
69
  # It can work accept a flat array of options or a
@@ -47,6 +47,17 @@ module RailsAppGenerator
47
47
  end
48
48
  end
49
49
  end
50
+
51
+ def bundler_environment(environment_style: :unbundled_env, &block)
52
+ case environment_style
53
+ when :unbundled_env
54
+ Bundler.with_unbundled_env(&block)
55
+ when :original_env
56
+ Bundler.with_original_env(&block)
57
+ else
58
+ block.call
59
+ end
60
+ end
50
61
  end
51
62
  end
52
63
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.2.12'
4
+ VERSION = '0.2.15'
5
5
  end
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.2.12",
3
+ "version": "0.2.15",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "rails_app_generator",
9
- "version": "0.2.12",
9
+ "version": "0.2.15",
10
10
  "dependencies": {
11
11
  "daisyui": "^2.20.0"
12
12
  },
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.2.12",
3
+ "version": "0.2.15",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "args": {
3
- "app_path": "bcrypt_ruby",
3
+ "app_path": "bcrypt",
4
4
  "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/addons"
5
5
  },
6
6
  "opts": {
7
7
  "skip_git": true,
8
8
  "skip_test": true,
9
- "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/bcrypt_ruby/_.rb",
10
- "add_bcrypt_ruby": true
9
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/bcrypt/_.rb",
10
+ "add_bcrypt": true
11
11
  }
12
12
  }
@@ -0,0 +1,15 @@
1
+ {
2
+ "args": {
3
+ "app_path": "motor_admin",
4
+ "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/addons"
5
+ },
6
+ "opts": {
7
+ "skip_git": true,
8
+ "skip_test": true,
9
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/motor_admin/_.rb",
10
+ "add_annotate": true,
11
+ "add_faker": true,
12
+ "add_motor_admin": true,
13
+ "add_rubocop": true
14
+ }
15
+ }
data/tasks/profile.thor CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  # https://codecrate.com/2014/01/replace-rake-with-thor.html
4
4
 
5
- require 'pry'
6
5
  require_relative 'gem_info'
7
6
  require 'cmdlet'
8
7
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # lib/rails_app_generator/rag_initializer.rb
4
+ # add_if(:<%= data.name_snake %>)
4
5
  # rag.add_option :add_<%= data.name_snake %> , type: :boolean, default: false
5
6
 
6
7
  module RailsAppGenerator
@@ -1,3 +1,3 @@
1
1
  <h1><%= data.name_human %></h1>
2
2
 
3
- <h2><%= data.description %></h2>
3
+ <p><%= data.description %></p>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_app_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.12
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
@@ -201,16 +201,16 @@ files:
201
201
  - after_templates/addons/administrate/app/views/layouts/_navbar.html.erb
202
202
  - after_templates/addons/administrate/app/views/layouts/application.html.erb
203
203
  - after_templates/addons/administrate/db/seeds.rb
204
- - after_templates/addons/bcrypt_ruby/_.rb
205
- - after_templates/addons/bcrypt_ruby/app/controllers/home_controller.rb
206
- - after_templates/addons/bcrypt_ruby/app/models/user.rb
207
- - after_templates/addons/bcrypt_ruby/app/views/home/index.html.erb
208
- - after_templates/addons/bcrypt_ruby/app/views/layouts/_footer.html.erb
209
- - after_templates/addons/bcrypt_ruby/app/views/layouts/_navbar.html.erb
210
- - after_templates/addons/bcrypt_ruby/app/views/layouts/application.html.erb
211
- - after_templates/addons/bcrypt_ruby/app/views/users/_form.html.erb
212
- - after_templates/addons/bcrypt_ruby/app/views/users/_user.html.erb
213
- - after_templates/addons/bcrypt_ruby/db/seeds.rb
204
+ - after_templates/addons/bcrypt/_.rb
205
+ - after_templates/addons/bcrypt/app/controllers/home_controller.rb
206
+ - after_templates/addons/bcrypt/app/models/user.rb
207
+ - after_templates/addons/bcrypt/app/views/home/index.html.erb
208
+ - after_templates/addons/bcrypt/app/views/layouts/_footer.html.erb
209
+ - after_templates/addons/bcrypt/app/views/layouts/_navbar.html.erb
210
+ - after_templates/addons/bcrypt/app/views/layouts/application.html.erb
211
+ - after_templates/addons/bcrypt/app/views/users/_form.html.erb
212
+ - after_templates/addons/bcrypt/app/views/users/_user.html.erb
213
+ - after_templates/addons/bcrypt/db/seeds.rb
214
214
  - after_templates/addons/browser/_.rb
215
215
  - after_templates/addons/browser/app/controllers/home_controller.rb
216
216
  - after_templates/addons/browser/app/views/home/index.html.erb
@@ -272,6 +272,13 @@ files:
272
272
  - after_templates/addons/mini_magick/app/views/layouts/_footer.html.erb
273
273
  - after_templates/addons/mini_magick/app/views/layouts/_navbar.html.erb
274
274
  - after_templates/addons/mini_magick/app/views/layouts/application.html.erb
275
+ - after_templates/addons/motor_admin/_.rb
276
+ - after_templates/addons/motor_admin/app/controllers/home_controller.rb
277
+ - after_templates/addons/motor_admin/app/views/home/index.html.erb
278
+ - after_templates/addons/motor_admin/app/views/layouts/_footer.html.erb
279
+ - after_templates/addons/motor_admin/app/views/layouts/_navbar.html.erb
280
+ - after_templates/addons/motor_admin/app/views/layouts/application.html.erb
281
+ - after_templates/addons/motor_admin/db/seeds.rb
275
282
  - after_templates/addons/phony_rails/_.rb
276
283
  - after_templates/addons/phony_rails/app/controllers/home_controller.rb
277
284
  - after_templates/addons/phony_rails/app/views/home/index.html.erb
@@ -500,7 +507,7 @@ files:
500
507
  - lib/rails_app_generator/addons/acts_as_list.rb
501
508
  - lib/rails_app_generator/addons/administrate.rb
502
509
  - lib/rails_app_generator/addons/annotate.rb
503
- - lib/rails_app_generator/addons/bcrypt_ruby.rb
510
+ - lib/rails_app_generator/addons/bcrypt.rb
504
511
  - lib/rails_app_generator/addons/browser.rb
505
512
  - lib/rails_app_generator/addons/chartkick.rb
506
513
  - lib/rails_app_generator/addons/continuous_integration.rb
@@ -573,7 +580,7 @@ files:
573
580
  - package.json
574
581
  - profiles/addons/acts_as_list.json
575
582
  - profiles/addons/administrate.json
576
- - profiles/addons/bcrypt_ruby.json
583
+ - profiles/addons/bcrypt.json
577
584
  - profiles/addons/browser.json
578
585
  - profiles/addons/chartkick.json
579
586
  - profiles/addons/dotenv.json
@@ -583,6 +590,7 @@ files:
583
590
  - profiles/addons/httparty.json
584
591
  - profiles/addons/lograge.json
585
592
  - profiles/addons/mini_magick.json
593
+ - profiles/addons/motor_admin.json
586
594
  - profiles/addons/phony_rails.json
587
595
  - profiles/addons/public_suffix.json
588
596
  - profiles/addons/rails-html-sanitizer.json