rails_app_generator 0.1.26 → 0.2.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.
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.