rails_template_18f 0.2.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/Gemfile +0 -2
  4. data/Gemfile.lock +3 -2
  5. data/README.md +12 -15
  6. data/exe/rails_template_18f +60 -0
  7. data/lib/generators/rails_template18f/active_storage/active_storage_generator.rb +142 -0
  8. data/lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb +33 -0
  9. data/lib/generators/rails_template18f/active_storage/templates/app/models/file_upload.rb +25 -0
  10. data/lib/generators/rails_template18f/active_storage/templates/doc/adr/clamav.md.tt +30 -0
  11. data/lib/generators/rails_template18f/active_storage/templates/spec/jobs/file_scan_job_spec.rb +35 -0
  12. data/lib/generators/rails_template18f/active_storage/templates/spec/models/file_upload_spec.rb +38 -0
  13. data/lib/generators/rails_template18f/circleci/circleci_generator.rb +4 -1
  14. data/lib/generators/rails_template18f/cloud_gov_config/cloud_gov_config_generator.rb +29 -0
  15. data/lib/generators/rails_template18f/cloud_gov_config/templates/app/models/cloud_gov_config.rb +15 -0
  16. data/lib/generators/rails_template18f/cloud_gov_config/templates/spec/models/cloud_gov_config_spec.rb +44 -0
  17. data/lib/generators/rails_template18f/i18n/i18n_generator.rb +106 -0
  18. data/{templates → lib/generators/rails_template18f/i18n/templates}/config/locales/en.yml.tt +3 -3
  19. data/{templates → lib/generators/rails_template18f/i18n/templates}/config/locales/es.yml +3 -3
  20. data/{templates → lib/generators/rails_template18f/i18n/templates}/config/locales/fr.yml +3 -6
  21. data/{templates → lib/generators/rails_template18f/i18n/templates}/config/locales/zh.yml +0 -0
  22. data/lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb +59 -0
  23. data/lib/generators/rails_template18f/i18n_js/templates/lib/tasks/i18n.rake +9 -0
  24. data/lib/generators/rails_template18f/newrelic/newrelic_generator.rb +2 -0
  25. data/lib/generators/rails_template18f/sidekiq/sidekiq_generator.rb +72 -0
  26. data/lib/generators/rails_template18f/sidekiq/templates/config/initializers/redis.rb +14 -0
  27. data/lib/generators/rails_template18f/terraform/templates/terraform/production/main.tf.tt +37 -5
  28. data/lib/generators/rails_template18f/terraform/templates/terraform/shared/clamav/main.tf.tt +50 -0
  29. data/lib/generators/rails_template18f/terraform/templates/terraform/shared/clamav/providers.tf +16 -0
  30. data/lib/generators/rails_template18f/terraform/templates/terraform/shared/clamav/variables.tf +47 -0
  31. data/lib/generators/rails_template18f/terraform/templates/terraform/shared/redis/main.tf.tt +23 -0
  32. data/lib/generators/rails_template18f/terraform/templates/terraform/shared/redis/providers.tf +16 -0
  33. data/lib/generators/rails_template18f/terraform/templates/terraform/shared/redis/variables.tf +42 -0
  34. data/lib/generators/rails_template18f/terraform/templates/terraform/staging/main.tf.tt +37 -5
  35. data/lib/generators/rails_template18f/terraform/terraform_generator.rb +0 -11
  36. data/lib/rails_template18f/app_updater.rb +19 -0
  37. data/lib/rails_template18f/generators/base.rb +37 -5
  38. data/lib/rails_template18f/generators/cloud_gov_options.rb +0 -4
  39. data/lib/rails_template18f/version.rb +1 -1
  40. data/rails-template-18f.gemspec +2 -0
  41. data/template.rb +78 -96
  42. data/templates/config/deployment/staging.yml +1 -1
  43. data/templates/config/environments/ci.rb +0 -1
  44. data/templates/doc/compliance/apps/application.boundary.md.tt +0 -7
  45. metadata +59 -8
@@ -1,15 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bundler"
4
+
3
5
  module RailsTemplate18f
4
6
  module Generators
5
7
  module Base
6
8
  extend ActiveSupport::Concern
7
9
  include ::Rails::Generators::AppName
8
10
 
9
- included do
10
- self.source_path = RailsTemplate18f::Generators.const_source_location(name).first
11
- end
12
-
13
11
  class_methods do
14
12
  attr_accessor :source_path
15
13
 
@@ -18,19 +16,53 @@ module RailsTemplate18f
18
16
  end
19
17
  end
20
18
 
19
+ included do
20
+ self.source_path = RailsTemplate18f::Generators.const_source_location(name).first
21
+ end
22
+
21
23
  private
22
24
 
25
+ def bundle_install
26
+ Bundler.with_original_env do
27
+ in_root do
28
+ run "bundle install"
29
+ yield if block_given?
30
+ end
31
+ end
32
+ end
33
+
34
+ def gem_installed?(gem_name)
35
+ file_content("Gemfile").match?(/gem "#{gem_name}"/)
36
+ end
37
+
23
38
  def file_content(filename)
24
- File.read(File.expand_path(filename, destination_root))
39
+ file_path = File.expand_path(filename, destination_root)
40
+ if File.exist? file_path
41
+ File.read(file_path)
42
+ else
43
+ ""
44
+ end
25
45
  end
26
46
 
27
47
  def ruby_version
28
48
  RUBY_VERSION
29
49
  end
30
50
 
51
+ def terraform_dir_exists?
52
+ Dir.exist? File.expand_path("terraform", destination_root)
53
+ end
54
+
31
55
  def skip_git?
32
56
  !Dir.exist?(File.expand_path(".git", destination_root))
33
57
  end
58
+
59
+ def has_active_job?
60
+ defined?(::ActiveJob)
61
+ end
62
+
63
+ def has_active_storage?
64
+ defined?(::ActiveStorage)
65
+ end
34
66
  end
35
67
  end
36
68
  end
@@ -48,10 +48,6 @@ module RailsTemplate18f
48
48
  end
49
49
  "prod"
50
50
  end
51
-
52
- def terraform_dir_exists?
53
- Dir.exist? File.expand_path("terraform", destination_root)
54
- end
55
51
  end
56
52
  end
57
53
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsTemplate18f
4
- VERSION = "0.2.0"
4
+ VERSION = "0.4.1"
5
5
  end
@@ -33,6 +33,8 @@ Gem::Specification.new do |spec|
33
33
  # guide at: https://bundler.io/guides/creating_gem.html
34
34
  spec.add_dependency "railties", "~> 7.0.0"
35
35
  spec.add_dependency "activesupport", "~> 7.0.0"
36
+ spec.add_dependency "thor", "~> 1.0"
37
+ spec.add_dependency "colorize", "~> 0.8"
36
38
 
37
39
  spec.add_development_dependency "rspec", "~> 3.11"
38
40
  spec.add_development_dependency "ammeter", "~> 1.1"
data/template.rb CHANGED
@@ -10,6 +10,10 @@ def skip_git?
10
10
  !!options[:skip_git]
11
11
  end
12
12
 
13
+ def skip_active_job?
14
+ !!options[:skip_active_job]
15
+ end
16
+
13
17
  def webpack?
14
18
  adjusted_javascript_option == "webpack"
15
19
  end
@@ -48,24 +52,24 @@ unless Gem::Dependency.new("rails", "~> 7.0.0").match?("rails", Rails.gem_versio
48
52
  end
49
53
 
50
54
  # ask setup questions
51
- @terraform = yes?("Create terraform files for cloud.gov services? (y/n)")
55
+ terraform = yes?("Create terraform files for cloud.gov services? (y/n)")
52
56
  @cloud_gov_organization = ask("What is your cloud.gov organization name? (Leave blank to fill in later)")
53
57
  default_staging_space = "staging"
54
- @cloud_gov_staging_space = ask("What is your cloud.gov staging space name? (Default: #{default_staging_space})")
58
+ cloud_gov_staging_space = ask("What is your cloud.gov staging space name? (Default: #{default_staging_space})")
55
59
  default_prod_space = "prod"
56
- @cloud_gov_production_space = ask("What is your cloud.gov production space name? (Default: #{default_prod_space})")
60
+ cloud_gov_production_space = ask("What is your cloud.gov production space name? (Default: #{default_prod_space})")
57
61
  @cloud_gov_organization = "TKTK-cloud.gov-org-name" if @cloud_gov_organization.blank?
58
- @cloud_gov_staging_space = default_staging_space if @cloud_gov_staging_space.blank?
59
- @cloud_gov_production_space = default_prod_space if @cloud_gov_production_space.blank?
62
+ cloud_gov_staging_space = default_staging_space if cloud_gov_staging_space.blank?
63
+ cloud_gov_production_space = default_prod_space if cloud_gov_production_space.blank?
60
64
 
61
65
  @github_actions = yes?("Create Github Actions? (y/n)")
62
66
  @circleci_pipeline = yes?("Create CircleCI config? (y/n)")
63
- @newrelic = yes?("Create FEDRAMP New Relic config files? (y/n)")
64
- @dap = yes?("If this will be a public site, should we include Digital Analytics Program code? (y/n)")
65
- @supported_languages = [:en]
66
- @supported_languages.push(:es) if yes?("Add Spanish to supported locales, with starter es.yml? (y/n)")
67
- @supported_languages.push(:fr) if yes?("Add French to supported locales, with starter fr.yml? (y/n)")
68
- @supported_languages.push(:zh) if yes?("Add Simplified Chinese to supported locales, with starter zh.yml? (y/n)")
67
+ newrelic = yes?("Create FEDRAMP New Relic config files? (y/n)")
68
+ dap = yes?("If this will be a public site, should we include Digital Analytics Program code? (y/n)")
69
+ supported_languages = []
70
+ supported_languages.push(:es) if yes?("Add Spanish to supported locales, with starter es.yml? (y/n)")
71
+ supported_languages.push(:fr) if yes?("Add French to supported locales, with starter fr.yml? (y/n)")
72
+ supported_languages.push(:zh) if yes?("Add Simplified Chinese to supported locales, with starter zh.yml? (y/n)")
69
73
 
70
74
  running_node_version = `node --version`.gsub(/^v/, "").strip
71
75
  @node_version = ask("What version of NodeJS are you using? (Default: #{running_node_version})")
@@ -168,24 +172,13 @@ uncomment_lines csp_initializer, "Rails.application"
168
172
  uncomment_lines csp_initializer, /end$/
169
173
  uncomment_lines csp_initializer, "content_security_policy_nonce"
170
174
 
171
- if @newrelic
172
- after_bundle do
173
- generate "rails_template18f:newrelic"
174
- end
175
- register_announcement("New Relic", <<~EOM)
176
- A New Relic config file has been written to `config/newrelic.yml`
177
-
178
- See instructions in README to get started sending data to New Relic
179
- EOM
180
- end
181
-
175
+ # install development & testing gems
182
176
  gem_group :development, :test do
183
177
  gem "rspec-rails", "~> 5.1"
184
178
  gem "dotenv-rails", "~> 2.7"
185
179
  gem "brakeman", "~> 5.2"
186
180
  gem "bundler-audit", "~> 0.9"
187
181
  gem "standard", "~> 1.7"
188
- gem "i18n-tasks", "~> 0.9"
189
182
  end
190
183
  if ENV["RT_DEV"] == "true"
191
184
  gem "rails_template_18f", group: :development, path: ENV["PWD"]
@@ -198,7 +191,9 @@ copy_file "env", ".env"
198
191
  copy_file "githooks/pre-commit", ".githooks/pre-commit", mode: :preserve
199
192
 
200
193
  unless skip_git?
201
- rails_command "credentials:diff --enroll"
194
+ after_bundle do
195
+ rails_command "credentials:diff --enroll"
196
+ end
202
197
  append_to_file ".gitignore", <<~EOM
203
198
 
204
199
  # Ignore local dotenv overrides
@@ -213,27 +208,7 @@ unless skip_git?
213
208
  EOM
214
209
  end
215
210
 
216
- # Setup translations
217
- @supported_languages.each do |language|
218
- template "config/locales/#{language}.yml", force: true
219
- end
220
- application "config.i18n.available_locales = #{@supported_languages}"
221
- application "config.i18n.fallbacks = [:en]"
222
- after_bundle do
223
- # Recommended by i18n-tasks
224
- run "cp $(i18n-tasks gem-path)/templates/config/i18n-tasks.yml config/"
225
- end
226
- insert_into_file "app/helpers/application_helper.rb", <<'EOH', before: /^end$/
227
- def format_active_locale(locale_string)
228
- link_classes = "usa-nav__link"
229
- if locale_string.to_sym == I18n.locale
230
- link_classes = "#{link_classes} usa-current"
231
- end
232
- link_to t("shared.languages.#{locale_string}"), root_path(locale: locale_string), class: link_classes
233
- end
234
- EOH
235
-
236
- # setup USWDS
211
+ # setup USWDS and asset pipeline
237
212
  copy_file "browserslistrc", ".browserslistrc" if webpack?
238
213
  uncomment_lines "Gemfile", "sassc-rails" # use sassc-rails for asset minification in prod
239
214
  after_bundle do
@@ -285,7 +260,7 @@ after_bundle do
285
260
  @import "uswds-settings.scss";
286
261
  @import "../../../node_modules/uswds/dist/scss/uswds.scss";
287
262
  EOCSS
288
- gsub_file "app/views/layouts/application.html.erb", "<html>", "<html lang=\"en\">"
263
+ gsub_file "app/views/layouts/application.html.erb", "<html>", '<html lang="<%= I18n.locale %>">'
289
264
  gsub_file "app/views/layouts/application.html.erb", /^\s+<%= yield %>/, <<-EOHTML
290
265
  <%= render "application/usa_banner" %>
291
266
  <%= render "application/header" %>
@@ -300,32 +275,14 @@ end
300
275
  directory "app/views/application"
301
276
 
302
277
  after_bundle do
278
+ # install and configure RSpec
303
279
  generate "rspec:install"
304
280
  gsub_file "spec/spec_helper.rb", /^=(begin|end)$/, ""
305
281
 
306
- # Setup the PagesController, locale routes, and home (root) route
282
+ # Setup the PagesController and home (root) route
307
283
  generate :controller, "pages", "home", "--skip-routes", "--no-helper", "--no-assets"
284
+ route "root 'pages#home'"
308
285
 
309
- if @supported_languages.count > 1
310
- locale_switching = <<~EOM
311
- around_action :switch_locale
312
-
313
- def switch_locale(&action)
314
- locale = params[:locale] || I18n.default_locale
315
- I18n.with_locale(locale, &action)
316
- end
317
- EOM
318
- insert_into_file "app/controllers/application_controller.rb", locale_switching, before: /^end/
319
-
320
- route <<-'EOM'
321
- scope "(:locale)", locale: /#{I18n.available_locales.join('|')}/ do
322
- # Your application routes here
323
- root 'pages#home'
324
- end
325
- EOM
326
- else
327
- route "root 'pages#home'"
328
- end
329
286
  gsub_file "spec/requests/pages_spec.rb", "/pages/home", "/"
330
287
  gsub_file "spec/views/pages/home.html.erb_spec.rb", " pending \"add some examples to (or delete) \#{__FILE__}\"", <<-EOM
331
288
  it "displays the gov banner" do
@@ -334,26 +291,46 @@ after_bundle do
334
291
  end
335
292
  EOM
336
293
 
337
- if run_db_setup
338
- rails_command "db:create"
339
- rails_command "db:migrate"
294
+ # Setup translations
295
+ generate "rails_template18f:i18n", "--languages=#{supported_languages.join(",")}", "--force"
296
+ end
297
+
298
+ # install ADRs and compliance documentation
299
+ directory "doc"
300
+ register_announcement("Documentation", <<~EOM)
301
+ * Include a short description of your application in doc/compliance/apps/application.boundary.md
302
+ * Remember to keep your Logical Data Model up to date in doc/compliance/apps/data.logical.md
303
+ EOM
304
+
305
+ if newrelic
306
+ after_bundle do
307
+ generate "rails_template18f:newrelic"
340
308
  end
309
+ register_announcement("New Relic", <<~EOM)
310
+ A New Relic config file has been written to `config/newrelic.yml`
311
+
312
+ See instructions in README to get started sending data to New Relic
313
+ EOM
314
+ end
315
+
316
+ if dap
317
+ after_bundle do
318
+ generate "rails_template18f:dap"
319
+ end
320
+ register_announcement("Digital Analytics Program", "Update the DAP agency code in app/views/layouts/application.html.erb")
341
321
  end
342
322
 
343
323
  # infrastructure & deploy
344
324
  template "manifest.yml"
345
325
  copy_file "lib/tasks/cf.rake"
346
326
  directory "config/deployment"
347
- after_bundle do
348
- run "cp .gitignore .cfignore" unless skip_git?
349
- end
350
327
 
351
- if @terraform
328
+ if terraform
352
329
  after_bundle do
353
330
  generator_arguments = [
354
331
  "--cg-org=#{@cloud_gov_organization}",
355
- "--cg-staging=#{@cloud_gov_staging_space}",
356
- "--cg-prod=#{@cloud_gov_production_space}"
332
+ "--cg-staging=#{cloud_gov_staging_space}",
333
+ "--cg-prod=#{cloud_gov_production_space}"
357
334
  ]
358
335
  generate "rails_template18f:terraform", *generator_arguments
359
336
  end
@@ -368,13 +345,25 @@ if @terraform
368
345
  register_announcement("Terraform", "Run the bootstrap script and update the appropriate CI/CD environment variables defined in the Deployment section of the README")
369
346
  end
370
347
 
348
+ if !skip_active_job?
349
+ after_bundle do
350
+ generate "rails_template18f:sidekiq"
351
+ end
352
+ end
353
+
354
+ if !skip_active_storage?
355
+ after_bundle do
356
+ generate "rails_template18f:active_storage"
357
+ end
358
+ end
359
+
371
360
  if @github_actions
372
361
  after_bundle do
373
362
  generator_arguments = [
374
- (@terraform ? "--terraform" : "--no-terraform"),
363
+ (terraform ? "--terraform" : "--no-terraform"),
375
364
  "--cg-org=#{@cloud_gov_organization}",
376
- "--cg-staging=#{@cloud_gov_staging_space}",
377
- "--cg-prod=#{@cloud_gov_production_space}"
365
+ "--cg-staging=#{cloud_gov_staging_space}",
366
+ "--cg-prod=#{cloud_gov_production_space}"
378
367
  ]
379
368
  generate "rails_template18f:github_actions", *generator_arguments
380
369
  end
@@ -391,10 +380,10 @@ end
391
380
  if @circleci_pipeline
392
381
  after_bundle do
393
382
  generator_arguments = [
394
- (@terraform ? "--terraform" : "--no-terraform"),
383
+ (terraform ? "--terraform" : "--no-terraform"),
395
384
  "--cg-org=#{@cloud_gov_organization}",
396
- "--cg-staging=#{@cloud_gov_staging_space}",
397
- "--cg-prod=#{@cloud_gov_production_space}"
385
+ "--cg-staging=#{cloud_gov_staging_space}",
386
+ "--cg-prod=#{cloud_gov_production_space}"
398
387
  ]
399
388
  generate "rails_template18f:circleci", *generator_arguments
400
389
  end
@@ -403,19 +392,6 @@ if @circleci_pipeline
403
392
  EOM
404
393
  end
405
394
 
406
- directory "doc"
407
- register_announcement("Documentation", <<~EOM)
408
- * Include a short description of your application in doc/compliance/apps/application.boundary.md
409
- * Remember to keep your Logical Data Model up to date in doc/compliance/apps/data.logical.md
410
- EOM
411
-
412
- if @dap
413
- after_bundle do
414
- generate "rails_template18f:dap"
415
- end
416
- register_announcement("Digital Analytics Program", "Update the DAP agency code in app/views/layouts/application.html.erb")
417
- end
418
-
419
395
  # setup production credentials file
420
396
  require "rails/generators"
421
397
  require "rails/generators/rails/encryption_key_file/encryption_key_file_generator"
@@ -444,6 +420,11 @@ EOM
444
420
 
445
421
  # ensure this is the very last step
446
422
  after_bundle do
423
+ if run_db_setup
424
+ rails_command "db:create"
425
+ rails_command "db:migrate"
426
+ end
427
+
447
428
  # x86_64-linux is required to install gems on any linux system such as cloud.gov or CI pipelines
448
429
  run "bundle lock --add-platform x86_64-linux"
449
430
 
@@ -453,10 +434,11 @@ after_bundle do
453
434
  run "bundle exec standardrb --fix"
454
435
 
455
436
  unless skip_git?
437
+ run "cp .gitignore .cfignore"
456
438
  git add: "."
457
439
  git commit: "-a -m 'Initial commit'"
458
440
  end
459
441
 
460
- # Post-install announcement
442
+ # Post-install announcements
461
443
  print_announcements
462
444
  end
@@ -1,3 +1,3 @@
1
1
  env: staging
2
2
  web_instances: 1
3
- web_memory: 512M
3
+ web_memory: 256M
@@ -1,7 +1,6 @@
1
1
  require_relative "./production"
2
2
 
3
3
  Rails.application.configure do
4
- config.assets.compile = true
5
4
  config.public_file_server.enabled = true
6
5
 
7
6
  logger = ActiveSupport::Logger.new($stdout)
@@ -30,15 +30,11 @@ Boundary(aws, "AWS GovCloud") {
30
30
  System_Boundary(inventory, "Application") {
31
31
  Container(app, "<&layers> <%= app_name.titleize %>", "Ruby <%= @ruby_version %>, Rails <%= Rails.version %>", "TKTK Application Description")
32
32
  ContainerDb(app_db, "Application DB", "AWS RDS (PostgreSQL)", "Primary data storage")
33
- <% if !skip_active_storage? %>
34
- ContainerDb(app_s3, "File Storage", "AWS S3", "User-uploaded file storage")
35
- <% end %>
36
33
  }
37
34
  }
38
35
  }
39
36
  }
40
37
 
41
-
42
38
  Boundary(gsa_saas, "GSA-authorized SaaS") {
43
39
  }
44
40
 
@@ -49,9 +45,6 @@ Rel(browser, aws_alb, "request info, submit requests", "https GET/POST (443)")
49
45
  Rel(aws_alb, cloudgov_router, "proxies requests", "https GET/POST (443)")
50
46
  Rel(cloudgov_router, app, "proxies requests", "https GET/POST (443)")
51
47
  Rel(app, app_db, "reads/writes primary data", "psql (5432)")
52
- <% if !skip_active_storage? %>
53
- Rel(app, app_s3, "reads/writes file data", "https (443)")
54
- <% end %>
55
48
  @enduml
56
49
  ```
57
50
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_template_18f
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Ahearn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-16 00:00:00.000000000 Z
11
+ date: 2022-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 7.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: thor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: colorize
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.8'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.8'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rspec
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -83,7 +111,8 @@ dependencies:
83
111
  description:
84
112
  email:
85
113
  - ryan.ahearn@gsa.gov
86
- executables: []
114
+ executables:
115
+ - rails_template_18f
87
116
  extensions: []
88
117
  extra_rdoc_files: []
89
118
  files:
@@ -98,11 +127,21 @@ files:
98
127
  - Rakefile
99
128
  - bin/console
100
129
  - bin/setup
130
+ - exe/rails_template_18f
131
+ - lib/generators/rails_template18f/active_storage/active_storage_generator.rb
132
+ - lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
133
+ - lib/generators/rails_template18f/active_storage/templates/app/models/file_upload.rb
134
+ - lib/generators/rails_template18f/active_storage/templates/doc/adr/clamav.md.tt
135
+ - lib/generators/rails_template18f/active_storage/templates/spec/jobs/file_scan_job_spec.rb
136
+ - lib/generators/rails_template18f/active_storage/templates/spec/models/file_upload_spec.rb
101
137
  - lib/generators/rails_template18f/circleci/circleci_generator.rb
102
138
  - lib/generators/rails_template18f/circleci/templates/Dockerfile.tt
103
139
  - lib/generators/rails_template18f/circleci/templates/bin/ci-server-start
104
140
  - lib/generators/rails_template18f/circleci/templates/circleci/config.yml.tt
105
141
  - lib/generators/rails_template18f/circleci/templates/docker-compose.ci.yml
142
+ - lib/generators/rails_template18f/cloud_gov_config/cloud_gov_config_generator.rb
143
+ - lib/generators/rails_template18f/cloud_gov_config/templates/app/models/cloud_gov_config.rb
144
+ - lib/generators/rails_template18f/cloud_gov_config/templates/spec/models/cloud_gov_config_spec.rb
106
145
  - lib/generators/rails_template18f/dap/dap_generator.rb
107
146
  - lib/generators/rails_template18f/github_actions/github_actions_generator.rb
108
147
  - lib/generators/rails_template18f/github_actions/templates/github/actions/run-server/action.yml
@@ -118,8 +157,17 @@ files:
118
157
  - lib/generators/rails_template18f/github_actions/templates/github/workflows/rspec.yml.tt
119
158
  - lib/generators/rails_template18f/github_actions/templates/github/workflows/terraform-production.yml
120
159
  - lib/generators/rails_template18f/github_actions/templates/github/workflows/terraform-staging.yml
160
+ - lib/generators/rails_template18f/i18n/i18n_generator.rb
161
+ - lib/generators/rails_template18f/i18n/templates/config/locales/en.yml.tt
162
+ - lib/generators/rails_template18f/i18n/templates/config/locales/es.yml
163
+ - lib/generators/rails_template18f/i18n/templates/config/locales/fr.yml
164
+ - lib/generators/rails_template18f/i18n/templates/config/locales/zh.yml
165
+ - lib/generators/rails_template18f/i18n_js/i18n_js_generator.rb
166
+ - lib/generators/rails_template18f/i18n_js/templates/lib/tasks/i18n.rake
121
167
  - lib/generators/rails_template18f/newrelic/newrelic_generator.rb
122
168
  - lib/generators/rails_template18f/newrelic/templates/config/newrelic.yml.tt
169
+ - lib/generators/rails_template18f/sidekiq/sidekiq_generator.rb
170
+ - lib/generators/rails_template18f/sidekiq/templates/config/initializers/redis.rb
123
171
  - lib/generators/rails_template18f/terraform/templates/terraform/README.md.tt
124
172
  - lib/generators/rails_template18f/terraform/templates/terraform/bootstrap/import.sh
125
173
  - lib/generators/rails_template18f/terraform/templates/terraform/bootstrap/main.tf.tt
@@ -132,12 +180,18 @@ files:
132
180
  - lib/generators/rails_template18f/terraform/templates/terraform/production/main.tf.tt
133
181
  - lib/generators/rails_template18f/terraform/templates/terraform/production/providers.tf.tt
134
182
  - lib/generators/rails_template18f/terraform/templates/terraform/production/variables.tf
183
+ - lib/generators/rails_template18f/terraform/templates/terraform/shared/clamav/main.tf.tt
184
+ - lib/generators/rails_template18f/terraform/templates/terraform/shared/clamav/providers.tf
185
+ - lib/generators/rails_template18f/terraform/templates/terraform/shared/clamav/variables.tf
135
186
  - lib/generators/rails_template18f/terraform/templates/terraform/shared/database/main.tf.tt
136
187
  - lib/generators/rails_template18f/terraform/templates/terraform/shared/database/providers.tf
137
188
  - lib/generators/rails_template18f/terraform/templates/terraform/shared/database/variables.tf
138
189
  - lib/generators/rails_template18f/terraform/templates/terraform/shared/domain/main.tf.tt
139
190
  - lib/generators/rails_template18f/terraform/templates/terraform/shared/domain/providers.tf
140
191
  - lib/generators/rails_template18f/terraform/templates/terraform/shared/domain/variables.tf
192
+ - lib/generators/rails_template18f/terraform/templates/terraform/shared/redis/main.tf.tt
193
+ - lib/generators/rails_template18f/terraform/templates/terraform/shared/redis/providers.tf
194
+ - lib/generators/rails_template18f/terraform/templates/terraform/shared/redis/variables.tf
141
195
  - lib/generators/rails_template18f/terraform/templates/terraform/shared/s3/main.tf
142
196
  - lib/generators/rails_template18f/terraform/templates/terraform/shared/s3/providers.tf
143
197
  - lib/generators/rails_template18f/terraform/templates/terraform/shared/s3/variables.tf
@@ -145,6 +199,7 @@ files:
145
199
  - lib/generators/rails_template18f/terraform/templates/terraform/staging/providers.tf.tt
146
200
  - lib/generators/rails_template18f/terraform/templates/terraform/staging/variables.tf
147
201
  - lib/generators/rails_template18f/terraform/terraform_generator.rb
202
+ - lib/rails_template18f/app_updater.rb
148
203
  - lib/rails_template18f/generators.rb
149
204
  - lib/rails_template18f/generators/base.rb
150
205
  - lib/rails_template18f/generators/cloud_gov_options.rb
@@ -170,10 +225,6 @@ files:
170
225
  - templates/config/deployment/staging.yml
171
226
  - templates/config/environments/ci.rb
172
227
  - templates/config/environments/staging.rb
173
- - templates/config/locales/en.yml.tt
174
- - templates/config/locales/es.yml
175
- - templates/config/locales/fr.yml
176
- - templates/config/locales/zh.yml
177
228
  - templates/doc/adr/0001-record-architecture-decisions.md.tt
178
229
  - templates/doc/adr/0002-initial-architecture-decisions.md.tt
179
230
  - templates/doc/adr/0003-security-scans.md.tt
@@ -212,7 +263,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
263
  - !ruby/object:Gem::Version
213
264
  version: '0'
214
265
  requirements: []
215
- rubygems_version: 3.2.32
266
+ rubygems_version: 3.3.7
216
267
  signing_key:
217
268
  specification_version: 4
218
269
  summary: Generators for creating an 18F-flavored Rails app