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.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -1
- data/CHANGELOG.md +23 -0
- data/after_templates/addons/acts_as_list/_.rb +0 -14
- data/after_templates/addons/mini_magick/_.rb +1 -1
- data/docs/last_run/app_generator_class.json +406 -0
- data/docs/last_run/app_generator_data.json +44 -0
- data/docs/last_run/rails_options_class.json +406 -0
- data/docs/last_run/rails_options_data.json +53 -0
- data/exe/rag +2 -0
- data/lib/rails_app_generator/{add_on.rb → addon.rb} +3 -26
- data/lib/rails_app_generator/addon_util.rb +21 -0
- data/lib/rails_app_generator/addons/acts_as_list.rb +1 -1
- data/lib/rails_app_generator/addons/annotate.rb +1 -1
- data/lib/rails_app_generator/addons/browser.rb +1 -1
- data/lib/rails_app_generator/addons/chartkick.rb +1 -1
- data/lib/rails_app_generator/addons/continuous_integration.rb +1 -1
- data/lib/rails_app_generator/addons/devise.rb +1 -1
- data/lib/rails_app_generator/addons/docker.rb +1 -1
- data/lib/rails_app_generator/addons/docker_compose.rb +1 -1
- data/lib/rails_app_generator/addons/dotenv.rb +1 -1
- data/lib/rails_app_generator/addons/factory_bot.rb +1 -1
- data/lib/rails_app_generator/addons/faker.rb +1 -1
- data/lib/rails_app_generator/addons/foreman.rb +1 -1
- data/lib/rails_app_generator/addons/generators.rb +1 -1
- data/lib/rails_app_generator/addons/groupdate.rb +1 -1
- data/lib/rails_app_generator/addons/hexapdf.rb +1 -1
- data/lib/rails_app_generator/addons/high_voltage.rb +1 -1
- data/lib/rails_app_generator/addons/honeybadger.rb +1 -1
- data/lib/rails_app_generator/addons/httparty.rb +1 -1
- data/lib/rails_app_generator/addons/inline_svg.rb +1 -1
- data/lib/rails_app_generator/addons/irbrc.rb +1 -1
- data/lib/rails_app_generator/addons/lograge.rb +1 -1
- data/lib/rails_app_generator/addons/mini_magick.rb +1 -1
- data/lib/rails_app_generator/addons/pundit.rb +1 -1
- data/lib/rails_app_generator/addons/rails_html_sanitizer.rb +1 -1
- data/lib/rails_app_generator/addons/rspec.rb +1 -1
- data/lib/rails_app_generator/addons/rubocop.rb +1 -1
- data/lib/rails_app_generator/addons/scaffold.rb +1 -1
- data/lib/rails_app_generator/addons/services.rb +1 -1
- data/lib/rails_app_generator/addons/sidekiq.rb +2 -2
- data/lib/rails_app_generator/addons/stimulus.rb +1 -1
- data/lib/rails_app_generator/addons/stimulus_components.rb +1 -1
- data/lib/rails_app_generator/addons/tailwind.rb +1 -1
- data/lib/rails_app_generator/addons/twilio_ruby.rb +13 -0
- data/lib/rails_app_generator/addons/views.rb +1 -1
- data/lib/rails_app_generator/app_generator.rb +39 -172
- data/lib/rails_app_generator/cli/profile.rb +3 -1
- data/lib/rails_app_generator/configuration/rag_configuration.rb +18 -0
- data/lib/rails_app_generator/configuration/rag_configuration_extension.rb +14 -0
- data/lib/rails_app_generator/context.rb +1 -1
- data/lib/rails_app_generator/dependencies.rb +2 -2
- data/lib/rails_app_generator/options/build_option.rb +14 -9
- data/lib/rails_app_generator/options/options_builder.rb +67 -44
- data/lib/rails_app_generator/options/rails_options.rb +6 -68
- data/lib/rails_app_generator/rag_initializer.rb +250 -0
- data/lib/rails_app_generator/util.rb +26 -0
- data/lib/rails_app_generator/version.rb +1 -1
- data/lib/rails_app_generator.rb +8 -3
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/profiles/addons/mini_magick.json +2 -1
- data/tasks/addon.thor +4 -4
- data/templates/thor_task/addon/addon.tt +3 -7
- metadata +26 -7
- data/lib/rails_app_generator/addons/xmen.rb +0 -17
- data/lib/rails_app_generator/generators/advisories_generator.rb +0 -18
- data/lib/rails_app_generator/generators/base.rb +0 -60
- 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
|
-
#
|
5
|
-
class
|
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 :
|
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 <
|
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 <
|
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 <
|
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 <
|
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 <
|
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 <
|
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 <
|
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 <
|
7
|
+
class DockerCompose < RailsAppGenerator::Addon
|
8
8
|
def apply
|
9
9
|
template 'docker-compose.yml.erb', 'docker-compose.yml'
|
10
10
|
end
|
@@ -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 <
|
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 <
|
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 <
|
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 <
|
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.
|