rails_template_18f 0.2.0 → 0.4.1

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 (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