rails_app_generator 0.1.26 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -1
  3. data/CHANGELOG.md +23 -0
  4. data/after_templates/addons/acts_as_list/_.rb +0 -14
  5. data/after_templates/addons/mini_magick/_.rb +1 -1
  6. data/docs/last_run/app_generator_class.json +406 -0
  7. data/docs/last_run/app_generator_data.json +44 -0
  8. data/docs/last_run/rails_options_class.json +406 -0
  9. data/docs/last_run/rails_options_data.json +53 -0
  10. data/exe/rag +2 -0
  11. data/lib/rails_app_generator/{add_on.rb → addon.rb} +3 -26
  12. data/lib/rails_app_generator/addon_util.rb +21 -0
  13. data/lib/rails_app_generator/addons/acts_as_list.rb +1 -1
  14. data/lib/rails_app_generator/addons/annotate.rb +1 -1
  15. data/lib/rails_app_generator/addons/browser.rb +1 -1
  16. data/lib/rails_app_generator/addons/chartkick.rb +1 -1
  17. data/lib/rails_app_generator/addons/continuous_integration.rb +1 -1
  18. data/lib/rails_app_generator/addons/devise.rb +1 -1
  19. data/lib/rails_app_generator/addons/docker.rb +1 -1
  20. data/lib/rails_app_generator/addons/docker_compose.rb +1 -1
  21. data/lib/rails_app_generator/addons/dotenv.rb +1 -1
  22. data/lib/rails_app_generator/addons/factory_bot.rb +1 -1
  23. data/lib/rails_app_generator/addons/faker.rb +1 -1
  24. data/lib/rails_app_generator/addons/foreman.rb +1 -1
  25. data/lib/rails_app_generator/addons/generators.rb +1 -1
  26. data/lib/rails_app_generator/addons/groupdate.rb +1 -1
  27. data/lib/rails_app_generator/addons/hexapdf.rb +1 -1
  28. data/lib/rails_app_generator/addons/high_voltage.rb +1 -1
  29. data/lib/rails_app_generator/addons/honeybadger.rb +1 -1
  30. data/lib/rails_app_generator/addons/httparty.rb +1 -1
  31. data/lib/rails_app_generator/addons/inline_svg.rb +1 -1
  32. data/lib/rails_app_generator/addons/irbrc.rb +1 -1
  33. data/lib/rails_app_generator/addons/lograge.rb +1 -1
  34. data/lib/rails_app_generator/addons/mini_magick.rb +1 -1
  35. data/lib/rails_app_generator/addons/pundit.rb +1 -1
  36. data/lib/rails_app_generator/addons/rails_html_sanitizer.rb +1 -1
  37. data/lib/rails_app_generator/addons/rspec.rb +1 -1
  38. data/lib/rails_app_generator/addons/rubocop.rb +1 -1
  39. data/lib/rails_app_generator/addons/scaffold.rb +1 -1
  40. data/lib/rails_app_generator/addons/services.rb +1 -1
  41. data/lib/rails_app_generator/addons/sidekiq.rb +2 -2
  42. data/lib/rails_app_generator/addons/stimulus.rb +1 -1
  43. data/lib/rails_app_generator/addons/stimulus_components.rb +1 -1
  44. data/lib/rails_app_generator/addons/tailwind.rb +1 -1
  45. data/lib/rails_app_generator/addons/twilio_ruby.rb +13 -0
  46. data/lib/rails_app_generator/addons/views.rb +1 -1
  47. data/lib/rails_app_generator/app_generator.rb +39 -172
  48. data/lib/rails_app_generator/cli/profile.rb +3 -1
  49. data/lib/rails_app_generator/configuration/rag_configuration.rb +18 -0
  50. data/lib/rails_app_generator/configuration/rag_configuration_extension.rb +14 -0
  51. data/lib/rails_app_generator/context.rb +1 -1
  52. data/lib/rails_app_generator/dependencies.rb +2 -2
  53. data/lib/rails_app_generator/options/build_option.rb +14 -9
  54. data/lib/rails_app_generator/options/options_builder.rb +67 -44
  55. data/lib/rails_app_generator/options/rails_options.rb +6 -68
  56. data/lib/rails_app_generator/rag_initializer.rb +250 -0
  57. data/lib/rails_app_generator/util.rb +26 -0
  58. data/lib/rails_app_generator/version.rb +1 -1
  59. data/lib/rails_app_generator.rb +8 -3
  60. data/package-lock.json +2 -2
  61. data/package.json +1 -1
  62. data/profiles/addons/mini_magick.json +2 -1
  63. data/tasks/addon.thor +4 -4
  64. data/templates/thor_task/addon/addon.tt +3 -7
  65. metadata +26 -7
  66. data/lib/rails_app_generator/addons/xmen.rb +0 -17
  67. data/lib/rails_app_generator/generators/advisories_generator.rb +0 -18
  68. data/lib/rails_app_generator/generators/base.rb +0 -60
  69. data/lib/rails_app_generator/generators/foo_generator.rb +0 -17
@@ -0,0 +1,406 @@
1
+ {
2
+ "class_option_keys": [
3
+ "skip_namespace",
4
+ "skip_collision_check",
5
+ "force",
6
+ "pretend",
7
+ "quiet",
8
+ "skip",
9
+ "ruby",
10
+ "template",
11
+ "database",
12
+ "skip_git",
13
+ "skip_keeps",
14
+ "skip_action_mailer",
15
+ "skip_action_mailbox",
16
+ "skip_action_text",
17
+ "skip_active_record",
18
+ "skip_active_job",
19
+ "skip_active_storage",
20
+ "skip_action_cable",
21
+ "skip_asset_pipeline",
22
+ "asset_pipeline",
23
+ "skip_javascript",
24
+ "skip_hotwire",
25
+ "skip_jbuilder",
26
+ "skip_test",
27
+ "skip_system_test",
28
+ "skip_bootsnap",
29
+ "dev",
30
+ "edge",
31
+ "main",
32
+ "rc",
33
+ "no_rc",
34
+ "help",
35
+ "version",
36
+ "api",
37
+ "minimal",
38
+ "javascript",
39
+ "css",
40
+ "skip_bundle",
41
+ "test",
42
+ "add_acts_as_list",
43
+ "add_browser",
44
+ "add_chartkick",
45
+ "add_faker",
46
+ "add_groupdate",
47
+ "add_hexapdf",
48
+ "add_httparty",
49
+ "add_honeybadger",
50
+ "add_mini_magick",
51
+ "add_rails_html_sanitizer",
52
+ "add_twilio_ruby"
53
+ ],
54
+ "class_options": [
55
+ {
56
+ "name": "skip_namespace",
57
+ "description": "Skip namespace (affects only isolated engines)",
58
+ "type": "boolean",
59
+ "default": false,
60
+ "required": false
61
+ },
62
+ {
63
+ "name": "skip_collision_check",
64
+ "description": "Skip collision check",
65
+ "type": "boolean",
66
+ "default": false,
67
+ "required": false
68
+ },
69
+ {
70
+ "name": "force",
71
+ "description": "Overwrite files that already exist",
72
+ "type": "boolean",
73
+ "default": false,
74
+ "required": false
75
+ },
76
+ {
77
+ "name": "pretend",
78
+ "description": "Run but do not make any changes",
79
+ "type": "boolean",
80
+ "default": false,
81
+ "required": false
82
+ },
83
+ {
84
+ "name": "quiet",
85
+ "description": "Suppress status output",
86
+ "type": "boolean",
87
+ "default": false,
88
+ "required": false
89
+ },
90
+ {
91
+ "name": "skip",
92
+ "description": "Skip files that already exist",
93
+ "type": "boolean",
94
+ "default": false,
95
+ "required": false
96
+ },
97
+ {
98
+ "name": "ruby",
99
+ "description": "Path to the Ruby binary of your choice",
100
+ "type": "string",
101
+ "default": "/Users/davidcruwys/.asdf/installs/ruby/2.7.6/bin/ruby",
102
+ "required": false
103
+ },
104
+ {
105
+ "name": "template",
106
+ "description": "Path to some application template (can be a filesystem path or URL)",
107
+ "type": "string",
108
+ "default": "",
109
+ "required": false
110
+ },
111
+ {
112
+ "name": "database",
113
+ "description": "Preconfigure for selected database (options: mysql/postgresql/sqlite3/oracle/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc)",
114
+ "type": "string",
115
+ "default": "sqlite3",
116
+ "required": false
117
+ },
118
+ {
119
+ "name": "skip_git",
120
+ "description": "Skip .gitignore file",
121
+ "type": "boolean",
122
+ "default": false,
123
+ "required": false
124
+ },
125
+ {
126
+ "name": "skip_keeps",
127
+ "description": "Skip source control .keep files",
128
+ "type": "boolean",
129
+ "default": false,
130
+ "required": false
131
+ },
132
+ {
133
+ "name": "skip_action_mailer",
134
+ "description": "Skip Action Mailer files",
135
+ "type": "boolean",
136
+ "default": false,
137
+ "required": false
138
+ },
139
+ {
140
+ "name": "skip_action_mailbox",
141
+ "description": "Skip Action Mailbox gem",
142
+ "type": "boolean",
143
+ "default": false,
144
+ "required": false
145
+ },
146
+ {
147
+ "name": "skip_action_text",
148
+ "description": "Skip Action Text gem",
149
+ "type": "boolean",
150
+ "default": false,
151
+ "required": false
152
+ },
153
+ {
154
+ "name": "skip_active_record",
155
+ "description": "Skip Active Record files",
156
+ "type": "boolean",
157
+ "default": false,
158
+ "required": false
159
+ },
160
+ {
161
+ "name": "skip_active_job",
162
+ "description": "Skip Active Job",
163
+ "type": "boolean",
164
+ "default": false,
165
+ "required": false
166
+ },
167
+ {
168
+ "name": "skip_active_storage",
169
+ "description": "Skip Active Storage files",
170
+ "type": "boolean",
171
+ "default": false,
172
+ "required": false
173
+ },
174
+ {
175
+ "name": "skip_action_cable",
176
+ "description": "Skip Action Cable files",
177
+ "type": "boolean",
178
+ "default": false,
179
+ "required": false
180
+ },
181
+ {
182
+ "name": "skip_asset_pipeline",
183
+ "description": "Indicates when to generate skip asset pipeline",
184
+ "type": "boolean",
185
+ "default": false,
186
+ "required": false
187
+ },
188
+ {
189
+ "name": "asset_pipeline",
190
+ "description": "Choose your asset pipeline [options: sprockets (default), propshaft]",
191
+ "type": "string",
192
+ "default": "sprockets",
193
+ "required": false
194
+ },
195
+ {
196
+ "name": "skip_javascript",
197
+ "description": "Skip JavaScript files",
198
+ "type": "boolean",
199
+ "default": false,
200
+ "required": false
201
+ },
202
+ {
203
+ "name": "skip_hotwire",
204
+ "description": "Skip Hotwire integration",
205
+ "type": "boolean",
206
+ "default": false,
207
+ "required": false
208
+ },
209
+ {
210
+ "name": "skip_jbuilder",
211
+ "description": "Skip jbuilder gem",
212
+ "type": "boolean",
213
+ "default": false,
214
+ "required": false
215
+ },
216
+ {
217
+ "name": "skip_test",
218
+ "description": "Skip test files",
219
+ "type": "boolean",
220
+ "default": false,
221
+ "required": false
222
+ },
223
+ {
224
+ "name": "skip_system_test",
225
+ "description": "Skip system test files",
226
+ "type": "boolean",
227
+ "default": false,
228
+ "required": false
229
+ },
230
+ {
231
+ "name": "skip_bootsnap",
232
+ "description": "Skip bootsnap gem",
233
+ "type": "boolean",
234
+ "default": false,
235
+ "required": false
236
+ },
237
+ {
238
+ "name": "dev",
239
+ "description": "Set up the application with Gemfile pointing to your Rails checkout",
240
+ "type": "boolean",
241
+ "default": false,
242
+ "required": false
243
+ },
244
+ {
245
+ "name": "edge",
246
+ "description": "Set up the application with Gemfile pointing to Rails repository",
247
+ "type": "boolean",
248
+ "default": false,
249
+ "required": false
250
+ },
251
+ {
252
+ "name": "main",
253
+ "description": "Set up the application with Gemfile pointing to Rails repository main branch",
254
+ "type": "boolean",
255
+ "default": false,
256
+ "required": false
257
+ },
258
+ {
259
+ "name": "rc",
260
+ "description": "Path to file containing extra configuration options for rails command",
261
+ "type": "string",
262
+ "default": "",
263
+ "required": false
264
+ },
265
+ {
266
+ "name": "no_rc",
267
+ "description": "Skip loading of extra configuration options from .railsrc file",
268
+ "type": "boolean",
269
+ "default": false,
270
+ "required": false
271
+ },
272
+ {
273
+ "name": "help",
274
+ "description": "Show this help message and quit",
275
+ "type": "boolean",
276
+ "default": false,
277
+ "required": false
278
+ },
279
+ {
280
+ "name": "version",
281
+ "description": "Show Rails version number and quit",
282
+ "type": "boolean",
283
+ "default": false,
284
+ "required": false
285
+ },
286
+ {
287
+ "name": "api",
288
+ "description": "Preconfigure smaller stack for API only apps",
289
+ "type": "boolean",
290
+ "default": false,
291
+ "required": false
292
+ },
293
+ {
294
+ "name": "minimal",
295
+ "description": "Preconfigure a minimal rails app",
296
+ "type": "boolean",
297
+ "default": false,
298
+ "required": false
299
+ },
300
+ {
301
+ "name": "javascript",
302
+ "description": "Choose JavaScript approach [options: importmap (default), webpack, esbuild, rollup]",
303
+ "type": "string",
304
+ "default": "importmap",
305
+ "required": false
306
+ },
307
+ {
308
+ "name": "css",
309
+ "description": "Choose CSS processor [options: tailwind, bootstrap, bulma, postcss, sass... check https://github.com/rails/cssbundling-rails]",
310
+ "type": "string",
311
+ "default": "",
312
+ "required": false
313
+ },
314
+ {
315
+ "name": "skip_bundle",
316
+ "description": "Don't run bundle install",
317
+ "type": "boolean",
318
+ "default": false,
319
+ "required": false
320
+ },
321
+ {
322
+ "name": "test",
323
+ "description": "",
324
+ "type": "string",
325
+ "default": "rspec",
326
+ "required": false
327
+ },
328
+ {
329
+ "name": "add_acts_as_list",
330
+ "description": "",
331
+ "type": "boolean",
332
+ "default": false,
333
+ "required": false
334
+ },
335
+ {
336
+ "name": "add_browser",
337
+ "description": "",
338
+ "type": "boolean",
339
+ "default": false,
340
+ "required": false
341
+ },
342
+ {
343
+ "name": "add_chartkick",
344
+ "description": "",
345
+ "type": "boolean",
346
+ "default": false,
347
+ "required": false
348
+ },
349
+ {
350
+ "name": "add_faker",
351
+ "description": "",
352
+ "type": "boolean",
353
+ "default": false,
354
+ "required": false
355
+ },
356
+ {
357
+ "name": "add_groupdate",
358
+ "description": "",
359
+ "type": "boolean",
360
+ "default": false,
361
+ "required": false
362
+ },
363
+ {
364
+ "name": "add_hexapdf",
365
+ "description": "",
366
+ "type": "boolean",
367
+ "default": false,
368
+ "required": false
369
+ },
370
+ {
371
+ "name": "add_httparty",
372
+ "description": "",
373
+ "type": "boolean",
374
+ "default": false,
375
+ "required": false
376
+ },
377
+ {
378
+ "name": "add_honeybadger",
379
+ "description": "",
380
+ "type": "boolean",
381
+ "default": false,
382
+ "required": false
383
+ },
384
+ {
385
+ "name": "add_mini_magick",
386
+ "description": "Add Mini Magick gem",
387
+ "type": "boolean",
388
+ "default": false,
389
+ "required": false
390
+ },
391
+ {
392
+ "name": "add_rails_html_sanitizer",
393
+ "description": "",
394
+ "type": "boolean",
395
+ "default": false,
396
+ "required": false
397
+ },
398
+ {
399
+ "name": "add_twilio_ruby",
400
+ "description": "",
401
+ "type": "boolean",
402
+ "default": false,
403
+ "required": false
404
+ }
405
+ ]
406
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "options": {
3
+ "skip_namespace": false,
4
+ "skip_collision_check": false,
5
+ "force": false,
6
+ "pretend": false,
7
+ "quiet": false,
8
+ "skip": false,
9
+ "ruby": "/Users/davidcruwys/.asdf/installs/ruby/2.7.6/bin/ruby",
10
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/twilio_ruby/_.rb",
11
+ "database": "sqlite3",
12
+ "skip_git": true,
13
+ "skip_keeps": false,
14
+ "skip_action_mailer": false,
15
+ "skip_action_mailbox": false,
16
+ "skip_action_text": false,
17
+ "skip_active_record": false,
18
+ "skip_active_job": false,
19
+ "skip_active_storage": false,
20
+ "skip_action_cable": false,
21
+ "skip_asset_pipeline": false,
22
+ "asset_pipeline": "sprockets",
23
+ "skip_javascript": false,
24
+ "skip_hotwire": false,
25
+ "skip_jbuilder": false,
26
+ "skip_test": true,
27
+ "skip_system_test": false,
28
+ "skip_bootsnap": false,
29
+ "dev": false,
30
+ "edge": false,
31
+ "main": false,
32
+ "rc": "",
33
+ "no_rc": false,
34
+ "help": false,
35
+ "version": false,
36
+ "api": false,
37
+ "minimal": false,
38
+ "javascript": "importmap",
39
+ "css": "",
40
+ "skip_bundle": false,
41
+ "add_acts_as_list": false,
42
+ "add_browser": false,
43
+ "add_chartkick": false,
44
+ "add_faker": false,
45
+ "add_groupdate": false,
46
+ "add_hexapdf": false,
47
+ "add_httparty": false,
48
+ "add_honeybadger": false,
49
+ "add_mini_magick": false,
50
+ "add_rails_html_sanitizer": false,
51
+ "add_twilio_ruby": true
52
+ }
53
+ }
data/exe/rag CHANGED
@@ -22,6 +22,8 @@ elsif first == 'diff'
22
22
  elsif first == 'new'
23
23
  RailsAppGenerator::AppGenerator.start(ARGV[1..], destination_root: '/Users/davidcruwys/dev/kgems/rails_app_generator/a/rag')
24
24
  else
25
+ require 'rails_app_generator/rag_initializer'
26
+
25
27
  fallback_profile_path = File.expand_path("#{Pathname.new(__FILE__).dirname}/../profiles")
26
28
  args = ['profile'] + ARGV + ["--fallback-profile-path=#{fallback_profile_path}"]
27
29
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- # XXXX
5
- class AddOn < Rails::Generators::Base
4
+ # Base class for all add-ons
5
+ class Addon < Rails::Generators::Base
6
6
  include Thor::Actions
7
7
  include Rails::Generators::Actions
8
8
  include Rails::Generators::AppName
@@ -41,7 +41,7 @@ module RailsAppGenerator
41
41
  return false if options["skip_#{addon_name}".to_sym]
42
42
  return true if context.default_addons.include?(addon_name)
43
43
 
44
- klass = addon_name.nil? ? self.class : self.class.get(addon_name)
44
+ klass = addon_name.nil? ? self.class : AddonUtil.get(addon_name)
45
45
  Dependencies.new(klass, context).satisfied?
46
46
  end
47
47
 
@@ -82,29 +82,6 @@ module RailsAppGenerator
82
82
  # rubocop:enable Metrics/BlockLength
83
83
 
84
84
  class << self
85
- # attr_reader :before_bundle_callback
86
- # attr_reader :after_bundle_callback
87
-
88
- # def before_bundle(&block)
89
- # @before_bundle_callback = block
90
- # end
91
-
92
- # def after_bundle(&block)
93
- # @after_bundle_callback = block
94
- # end
95
-
96
- # def apply(context = Context.new({}))
97
- # instance = new(context)
98
- # return unless instance.uses?
99
-
100
- # instance.apply
101
- # end
102
-
103
- def get(addon)
104
- addon = addon.to_s.capitalize.camelize
105
- "RailsAppGenerator::AddOns::#{addon}".constantize
106
- end
107
-
108
85
  def addon_name
109
86
  name.demodulize.underscore.to_sym
110
87
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ # Utility methods for accessing Addons
5
+ class AddonUtil
6
+ class << self
7
+ # Get the Addon classes that are stored in the RailsAppGenerator::Addons::* namespace
8
+ def classes
9
+ AddOns.constants
10
+ .map { |addon_klass_name| AddOns.const_get(addon_klass_name) }
11
+ .select { |klass| klass.ancestors.include?(RailsAppGenerator::Addon) }
12
+ end
13
+
14
+ # Convert a string to a symbol to a fully qualified class constant
15
+ def get(addon)
16
+ addon = addon.to_s.capitalize.camelize
17
+ "RailsAppGenerator::AddOns::#{addon}".constantize
18
+ end
19
+ end
20
+ end
21
+ end
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add ActsAsList to rails application
7
- class ActsAsList < AddOn
7
+ class ActsAsList < RailsAppGenerator::Addon
8
8
  depends_on :active_record
9
9
  required_gem gem.version('acts_as_list', '1.0.4', <<~COMMENT)
10
10
  This "acts_as" extension provides the capabilities for sorting and reordering a number of objects in a list.
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add Annotate for ActiveRecord models to rails application
7
- class Annotate < AddOn
7
+ class Annotate < RailsAppGenerator::Addon
8
8
  depends_on :active_record
9
9
 
10
10
  required_gem gem.version('annotate', '3.2.0', 'Annotates Rails/ActiveRecord Models, routes, fixtures, and others based on the database schema.')
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add Browser to rails application
7
- class Browser < AddOn
7
+ class Browser < RailsAppGenerator::Addon
8
8
  required_gem gem.version('browser', '5.3.1', 'Do some browser detection with Ruby.')
9
9
 
10
10
  def apply; end
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add Chartkick to rails application
7
- class Chartkick < AddOn
7
+ class Chartkick < RailsAppGenerator::Addon
8
8
  required_gem gem.version('chartkick', '4.2.1', 'Create beautiful JavaScript charts with one line of Ruby')
9
9
 
10
10
  def apply; end
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add GitHub Actions continuous integration
7
- class ContinuousIntegration < AddOn
7
+ class ContinuousIntegration < RailsAppGenerator::Addon
8
8
  def apply
9
9
  say 'continuous integration - Setup GitHub Actions'
10
10
  template('github/workflows/build.yml.erb', '.github/workflows/build.yml')
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add Devise authentication to rails application
7
- class Devise < AddOn
7
+ class Devise < RailsAppGenerator::Addon
8
8
  depends_on :active_record
9
9
 
10
10
  required_gem gem.version('devise', '4.8.1', 'Flexible authentication solution for Rails with Warden')
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add Docker to rails application
7
- class Docker < AddOn
7
+ class Docker < RailsAppGenerator::Addon
8
8
  def apply
9
9
  template 'Dockerfile.erb', 'Dockerfile'
10
10
  template '.dockerignore.erb', '.dockerignore'
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add Docker Compose to rails application
7
- class DockerCompose < AddOn
7
+ class DockerCompose < RailsAppGenerator::Addon
8
8
  def apply
9
9
  template 'docker-compose.yml.erb', 'docker-compose.yml'
10
10
  end
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add DotEnv to rails application
7
- class Dotenv < AddOn
7
+ class Dotenv < RailsAppGenerator::Addon
8
8
  def apply
9
9
  template '.env.development.erb', '.env.development'
10
10
  end
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add FactoryBot to rails application
7
- class FactoryBot < AddOn
7
+ class FactoryBot < RailsAppGenerator::Addon
8
8
  depends_on :active_record, :test
9
9
 
10
10
  def apply
@@ -7,7 +7,7 @@ module RailsAppGenerator
7
7
  # Custom add-ons for RailsAppGenerator
8
8
  module AddOns
9
9
  # Add Faker to rails application
10
- class Faker < AddOn
10
+ class Faker < RailsAppGenerator::Addon
11
11
  required_gem gem.version('faker', '2.22.0', 'Faker, a port of Data::Faker from Perl, is used to easily generate fake data: names, addresses, phone numbers, etc.')
12
12
 
13
13
  def apply; end
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add Foreman process management for applications with multiple components
7
- class Foreman < AddOn
7
+ class Foreman < RailsAppGenerator::Addon
8
8
  def apply
9
9
  template '.foreman.erb', '.foreman'
10
10
  template 'Procfile.erb', 'Procfile'
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add Rails Generator configuration to rails application
7
- class Generators < AddOn
7
+ class Generators < RailsAppGenerator::Addon
8
8
  def apply
9
9
  directory('lib/generators/rails/navigation', 'lib/generators/rails/navigation') if uses?(:views)
10
10
 
@@ -4,7 +4,7 @@ module RailsAppGenerator
4
4
  # Custom add-ons for RailsAppGenerator
5
5
  module AddOns
6
6
  # Add Groupdate to rails application
7
- class Groupdate < AddOn
7
+ class Groupdate < RailsAppGenerator::Addon
8
8
  required_gem gem.version('groupdate', '6.1.0', 'The simplest way to group temporal data')
9
9
 
10
10
  # NOTE: in the examples, the Groupdate gem is used in conjunction with Chartkick.