roro 0.3.28 → 0.3.30

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 (158) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +24 -8
  3. data/.idea/.gitignore +8 -0
  4. data/.idea/inspectionProfiles/Project_Default.xml +6 -0
  5. data/.idea/misc.xml +4 -0
  6. data/.idea/modules.xml +8 -0
  7. data/.idea/roro.iml +116 -0
  8. data/.idea/vcs.xml +6 -0
  9. data/CODE_OF_CONDUCT.md +31 -77
  10. data/lib/roro/cli/generate/generate_containers.rb +0 -5
  11. data/lib/roro/cli.rb +8 -8
  12. data/lib/roro/configurators/adventure_chooser.rb +1 -0
  13. data/lib/roro/configurators/adventure_picker.rb +1 -0
  14. data/lib/roro/configurators/adventure_writer.rb +4 -1
  15. data/lib/roro/configurators/configurator.rb +15 -8
  16. data/lib/roro/configurators/dependency_satisfier.rb +136 -0
  17. data/lib/roro/configurators/question_asker.rb +3 -3
  18. data/lib/roro/configurators/structure_builder.rb +2 -0
  19. data/lib/roro/configurators/validator.rb +2 -0
  20. data/lib/roro/dependencies/base.yml +90 -0
  21. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/_django.yml +7 -0
  22. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/django.yml +2 -8
  23. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/test/stage_one/stage_one_test.rb +1 -1
  24. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/%interpolated_story_name%.yml.tt → languages/python/python.yml} +0 -0
  25. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/templates/stage_one/%interpolated_stack_path% → languages/python}/templates/stage_one/.keep +0 -0
  26. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/templates/stage_one/%interpolated_stack_path% → languages/python}/test/.keep +0 -0
  27. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/templates/stage_one/%interpolated_stack_path% → languages/python}/test/stage_one/.keep +0 -0
  28. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/templates/stage_one/%interpolated_stack_path% → languages/python}/test/stage_one/stage_dummy/.keep +0 -0
  29. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/python/test/stage_one/stage_test.rb +42 -0
  30. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/ruby.yml +10 -0
  31. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/rails.yml +36 -0
  32. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/test/stage_one/dummy → languages/ruby/stories/rails/templates/stage_one}/.keep +0 -0
  33. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/templates/stage_one/Dockerfile.tt +26 -0
  34. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/6_1.yml +44 -0
  35. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/.env +6 -0
  36. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/Dockerfile.tt +28 -0
  37. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/config/database.yml +19 -0
  38. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/config/initializers/sidekiq.rb +13 -0
  39. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/docker-compose.yml.tt +57 -0
  40. data/lib/roro/stacks/catalog/unstoppable/developer_styles/{sashimi/stories/django/test/stage_one/dummy → okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/entrypoints}/.keep +0 -0
  41. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/entrypoints/docker-entrypoint.sh +9 -0
  42. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/entrypoints/sidekiq-entrypoint.sh +9 -0
  43. data/lib/roro/stacks/catalog/unstoppable/developer_styles/{sashimi/stories/django/test/stage_two/dummy → okonomi/languages/ruby/stories/rails/versions/6_1/test}/.keep +0 -0
  44. data/lib/roro/stacks/catalog/unstoppable/developer_styles/{sashimi/stories/rails/templates/stage_one/Gemfile.lock.tt → okonomi/languages/ruby/stories/rails/versions/6_1/test/stage_one/.keep} +0 -0
  45. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/test/stage_one/stage_dummy/.keep +0 -0
  46. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/test/stage_one/stage_dummy/Gemfile +66 -0
  47. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/test/stage_one/stage_test.rb +38 -0
  48. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/7_0.yml +38 -0
  49. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/.env +6 -0
  50. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/Dockerfile.tt +28 -0
  51. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/config/database.yml +19 -0
  52. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/config/initializers/sidekiq.rb +13 -0
  53. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/docker-compose.yml.tt +57 -0
  54. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/entrypoints/.keep +0 -0
  55. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/entrypoints/docker-entrypoint.sh +9 -0
  56. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/entrypoints/sidekiq-entrypoint.sh +9 -0
  57. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/test/.keep +0 -0
  58. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/test/stage_one/.keep +0 -0
  59. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/test/stage_one/stage_dummy/.keep +0 -0
  60. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/test/stage_one/stage_dummy/Gemfile +66 -0
  61. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/test/stage_one/stage_test.rb +37 -0
  62. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/okonomi.yml +4 -1
  63. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/templates/stage_one/.dockerignore +18 -0
  64. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/.env +1 -1
  65. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/test/stage_one/stage_test.rb +2 -10
  66. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/sashimi.yml +1 -1
  67. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/cert-manager.yml +32 -0
  68. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/.keep +0 -0
  69. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/echo1.yaml +32 -0
  70. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/echo2.yaml +32 -0
  71. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/echo_ingress.yaml.tt +18 -0
  72. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/prod_issuer.yaml.tt +19 -0
  73. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/staging_issuer.yaml.tt +19 -0
  74. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_2/echo_ingress.yaml.tt +25 -0
  75. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_3/echo_ingress.yaml.tt +25 -0
  76. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_3/ingress_nginx_svc.yaml.tt +31 -0
  77. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/test/.keep +0 -0
  78. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/test/stage_one/.keep +0 -0
  79. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/test/stage_one/stage_dummy/.keep +0 -0
  80. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/test/stage_one/stage_test.rb +32 -0
  81. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/rails.yml +48 -9
  82. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/.env +4 -0
  83. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/.gitignore +55 -0
  84. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/.keep +0 -0
  85. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/docker-compose.yml.tt +36 -12
  86. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/.keep +0 -0
  87. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/app-deployment.yaml.tt +72 -0
  88. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/app-service.yaml.tt +20 -0
  89. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/database-deployment.yaml.tt +59 -0
  90. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/database-service.yaml.tt +19 -0
  91. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/db-data-persistentvolumeclaim.yaml.tt +14 -0
  92. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/env-configmap.yaml.tt +12 -0
  93. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/redis-deployment.yaml.tt +33 -0
  94. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/redis-service.yaml.tt +19 -0
  95. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/secret.yaml.tt +11 -0
  96. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/sidekiq-deployment.yaml.tt +56 -0
  97. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/test/.keep +0 -0
  98. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/test/stage_one/.keep +0 -0
  99. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/test/stage_one/stage_dummy/.keep +0 -0
  100. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/test/stage_one/stage_test.rb +33 -0
  101. data/lib/roro/stacks/catalog/unstoppable/developer_styles/{okonomi → sashimi}/stories/roll_your_own/roll_your_own.yml +1 -0
  102. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/%interpolated_story_name%.yml.tt +10 -0
  103. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/templates/stage_one/.keep +0 -0
  104. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/.keep +0 -0
  105. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/stage_one/.keep +0 -0
  106. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/stage_one/stage_dummy/.keep +0 -0
  107. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/stage_one/stage_test.rb.tt +41 -0
  108. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/.gitignore.tt +55 -0
  109. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/test/stage_one/dummy/.keep +0 -0
  110. data/lib/roro/stacks/catalog/unstoppable/developer_styles/{okonomi → sashimi}/stories/roll_your_own/test/stage_one/stage_one_test.rb +2 -1
  111. data/lib/roro/version.rb +1 -1
  112. data/lib/roro.rb +4 -10
  113. data/mise/containers/backend/env/.keep +0 -0
  114. data/mise/containers/backend/scripts/.keep +0 -0
  115. data/mise/containers/database/env/.keep +0 -0
  116. data/mise/containers/database/scripts/.keep +0 -0
  117. data/mise/containers/frontend/env/.keep +0 -0
  118. data/mise/containers/frontend/scripts/.keep +0 -0
  119. data/mise/scripts/.keep +0 -0
  120. data/roro.gemspec +3 -3
  121. metadata +115 -72
  122. data/.ruby-version +0 -1
  123. data/lib/roro/cli/roll_your_own.rb +0 -12
  124. data/lib/roro/configurator.rb +0 -15
  125. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/stage_one/stage_test.rb.tt +0 -37
  126. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/django.yml +0 -36
  127. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_one/Dockerfile.tt +0 -7
  128. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_one/docker-compose.yml.tt +0 -20
  129. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_one/requirements.txt.tt +0 -2
  130. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_two/settings.py +0 -130
  131. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/test/stage_one/stage_one_test.rb +0 -37
  132. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/expressjs/expressjs.yml +0 -7
  133. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/expressjs/templates/stage_one/Dockerfile.tt +0 -14
  134. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/expressjs/templates/stage_one/docker-compose.yml.tt +0 -21
  135. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/Dockerfile.tt +0 -16
  136. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/Gemfile.tt +0 -2
  137. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/entrypoint.sh +0 -8
  138. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_two/database.yml.tt +0 -16
  139. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/__MACOSX/scripts/._.DS_Store +0 -0
  140. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/.DS_Store +0 -0
  141. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/bundler.sh +0 -22
  142. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/git.sh +0 -21
  143. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/rvm.sh +0 -38
  144. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/utilities.sh +0 -53
  145. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base.sh +0 -6
  146. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/clone_idea.sh +0 -14
  147. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/clone_repos.sh +0 -33
  148. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/install_correct_bundler.sh +0 -21
  149. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/install_rubies.sh +0 -6
  150. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize.sh +0 -18
  151. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/roro.sh +0 -15
  152. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/source.sh +0 -28
  153. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/bundle_all.sh +0 -12
  154. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/git_pull_all.sh +0 -15
  155. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/rvm_install_all.sh +0 -12
  156. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/yarn_install_all.sh +0 -10
  157. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/wordpress/templates/stage_one/docker-compose.yml.tt +0 -31
  158. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/wordpress/wordpress.yml +0 -16
@@ -0,0 +1,66 @@
1
+ source "https://rubygems.org"
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
+
4
+ ruby "3.0.2"
5
+
6
+ # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
7
+ gem "rails", "~> 7.0.0.alpha2"
8
+
9
+ # Use postgresql as the database for Active Record
10
+ gem "pg", "~> 1.1"
11
+
12
+ # Use the Puma web server [https://github.com/puma/puma]
13
+ gem "puma", "~> 5.0"
14
+
15
+ # Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]
16
+ gem "importmap-rails", ">= 0.3.4"
17
+
18
+ # Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
19
+ gem "turbo-rails", ">= 0.7.11"
20
+
21
+ # Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]
22
+ gem "stimulus-rails", ">= 0.4.0"
23
+
24
+ # Build JSON APIs with ease [https://github.com/rails/jbuilder]
25
+ gem "jbuilder", "~> 2.7"
26
+
27
+ # Use Redis adapter to run Action Cable in production
28
+ # gem "redis", "~> 4.0"
29
+
30
+ # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
31
+ gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ]
32
+
33
+ # Reduces boot times through caching; required in config/boot.rb
34
+ gem "bootsnap", ">= 1.4.4", require: false
35
+
36
+ # Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword]
37
+ # gem "bcrypt", "~> 3.1.7"
38
+
39
+ # Use Sass to process CSS
40
+ # gem "sassc-rails", "~> 2.1"
41
+
42
+ # Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images]
43
+ # gem "image_processing", "~> 1.2"
44
+
45
+ group :development, :test do
46
+ # Start debugger with binding.b [https://github.com/ruby/debug]
47
+ gem "debug", ">= 1.0.0", platforms: %i[ mri mingw x64_mingw ]
48
+ end
49
+
50
+ group :development do
51
+ # Use console on exceptions pages [https://github.com/rails/web-console]
52
+ gem "web-console", ">= 4.1.0"
53
+
54
+ # Add speed badges [https://github.com/MiniProfiler/rack-mini-profiler]
55
+ # gem "rack-mini-profiler", ">= 2.3.3"
56
+
57
+ # Speed up commands on slow machines / big apps [https://github.com/rails/spring]
58
+ # gem "spring"
59
+ end
60
+
61
+ group :test do
62
+ # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
63
+ gem "capybara", ">= 3.26"
64
+ gem "selenium-webdriver"
65
+ gem "webdrivers"
66
+ end
@@ -0,0 +1,38 @@
1
+ require 'test_helper'
2
+
3
+ describe 'lib roro stacks catalog unstoppable developer_styles okonomi languages ruby stories rails versions 7_0' do
4
+ Given(:workbench) { 'empty' }
5
+ Given(:cli) { Roro::CLI.new }
6
+ Given(:adventures) { %w[ 2 2 1 1 ] }
7
+ Given(:overrides) { %w[] }
8
+
9
+ Given(:rollon) {
10
+ # copy_stage_dummy(__dir__)
11
+ stubs_dependencies_met?
12
+ stubs_yes?
13
+ stub_adventure
14
+ stub_overrides
15
+ stub_run_actions
16
+ # quiet { cli.rollon }
17
+ cli.rollon
18
+ }
19
+
20
+ Given { rollon unless adventures.empty?}
21
+
22
+ describe 'must generate a' do
23
+ describe 'Gemfile with the correct rails version' do
24
+ focus
25
+ Then { assert_file 'Gemfile', /gem \"rails\", \"~> 6.1/ }
26
+ end
27
+
28
+ describe 'Dockerfile' do
29
+ describe 'ruby version' do
30
+ Then { assert_file 'Dockerfile', /FROM ruby:3.0/ }
31
+ end
32
+
33
+ describe 'yarn install command' do
34
+ Then { assert_file 'Dockerfile', /RUN yarn install/ }
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,38 @@
1
+ preface: some string
2
+
3
+ #depends_on:
4
+ # - git
5
+ # - docker
6
+ env:
7
+ base:
8
+ git_config_user_name:
9
+ name: The name you'd like associated with git activities
10
+ value: Jane Doe
11
+ git_config_user_email:
12
+ name: The email address you'd like associated with git activities
13
+ value: jane.doe@example.com
14
+ rails_version:
15
+ name: Ruby on Rails minor version
16
+ value: 7.0.0.alpha2
17
+ JOB_WORKER_URL:
18
+ name: Reids job worker url
19
+ value: redis://redis:6379/0
20
+ REDIS_URL:
21
+ name: Reids url
22
+ value: redis://redis:6379/0
23
+
24
+ actions:
25
+ - run 'sudo chown -R $USER:$USER .'
26
+ - directory "stage_one", '.', @env
27
+ - |
28
+ generator = Roro::CLI.new
29
+ generator.generate_mise
30
+ generator.generate_containers 'app', 'database', 'redis', 'sidekiq'
31
+ generator.generate_environments @env
32
+ generator.generate_keys
33
+ - chmod 'entrypoints/docker-entrypoint.sh', 0755
34
+ - chmod 'entrypoints/sidekiq-entrypoint.sh', 0755
35
+ - insert_into_file 'Gemfile', "gem 'sidekiq', '~>6.0.0'", :before => "\ngroup :development, :test do"
36
+ - run "sudo docker-compose build"
37
+ - run "sudo docker-compose run app rake db:create"
38
+ - run "sudo docker-compose up"
@@ -0,0 +1,6 @@
1
+ DATABASE_HOST=database
2
+ DATABASE_PORT=5432
3
+ REDIS_HOST=redis
4
+ REDIS_PORT=6379
5
+ JOB_WORKER_URL=redis://redis:6379/0
6
+ REDIS_URL=redis://redis:6379/0
@@ -0,0 +1,28 @@
1
+ FROM ruby:<%= @env[:base][:ruby_version][:value] %>-alpine AS builder
2
+
3
+ RUN apk add \
4
+ build-base \
5
+ postgresql-dev
6
+
7
+ RUN apk add --update\
8
+ file \
9
+ git \
10
+ nodejs \
11
+ tzdata \
12
+ yarn
13
+
14
+ RUN gem install bundler:<%= @env[:base][:bundler_version][:value] %>
15
+
16
+ WORKDIR /app
17
+
18
+ ## Install standard gems
19
+ COPY Gemfile Gemfile.lock ./
20
+ RUN bundle install -j4 --retry 3
21
+
22
+ RUN yarn install
23
+
24
+ COPY . ./
25
+
26
+ RUN bundle install
27
+
28
+ CMD ["./entrypoints/docker-entrypoint.sh"]
@@ -0,0 +1,19 @@
1
+ default: &default
2
+ adapter: postgresql
3
+ encoding: unicode
4
+ host: <%= ENV.fetch('DATABASE_HOST') %>
5
+ username: <%= ENV.fetch('POSTGRES_USERNAME') %>
6
+ password: <%= ENV.fetch('DATABASE_PASSWORD') %>
7
+ database: <%= ENV.fetch('DATABASE_NAME') %>
8
+ pool: 5
9
+ variables:
10
+ statement_timeout: 5000
11
+
12
+ development:
13
+ <<: *default
14
+
15
+ test:
16
+ <<: *default
17
+
18
+ production:
19
+ <<: *default
@@ -0,0 +1,13 @@
1
+ Sidekiq.configure_server do |config|
2
+ config.redis = {
3
+ host: ENV['REDIS_HOST'],
4
+ port: ENV['REDIS_PORT'] || '6379'
5
+ }
6
+ end
7
+
8
+ Sidekiq.configure_client do |config|
9
+ config.redis = {
10
+ host: ENV['REDIS_HOST'],
11
+ port: ENV['REDIS_PORT'] || '6379'
12
+ }
13
+ end
@@ -0,0 +1,57 @@
1
+ version: '3.4'
2
+
3
+ services:
4
+ app:
5
+ build:
6
+ context: .
7
+ dockerfile: Dockerfile
8
+ depends_on:
9
+ - database
10
+ - redis
11
+ ports:
12
+ - "3000:3000"
13
+ volumes:
14
+ - .:/app
15
+ - gem_cache:/usr/local/bundle/gems
16
+ - node_modules:/app/node_modules
17
+ env_file:
18
+ - ./mise/env/base.env
19
+ - ./mise/env/development.env
20
+ environment:
21
+ RAILS_ENV: development
22
+
23
+ database:
24
+ image: postgres:12.1
25
+ volumes:
26
+ - db_data:/var/lib/postgresql/data
27
+ - ./init.sql:/docker-entrypoint-initdb.d/init.sql
28
+
29
+ redis:
30
+ image: redis
31
+ env_file:
32
+ - ./mise/env/base.env
33
+ - ./mise/env/development.env
34
+
35
+ sidekiq:
36
+ build:
37
+ context: .
38
+ dockerfile: Dockerfile
39
+ depends_on:
40
+ - app
41
+ - database
42
+ - redis
43
+ volumes:
44
+ - .:/app
45
+ - gem_cache:/usr/local/bundle/gems
46
+ - node_modules:/app/node_modules
47
+ env_file:
48
+ - ./mise/env/base.env
49
+ - ./mise/env/development.env
50
+ environment:
51
+ RAILS_ENV: development
52
+ entrypoint: ./entrypoints/sidekiq-entrypoint.sh
53
+
54
+ volumes:
55
+ gem_cache:
56
+ db_data:
57
+ node_modules:
@@ -0,0 +1,9 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ if [ -f tmp/pids/server.pid ]; then
6
+ rm tmp/pids/server.pid
7
+ fi
8
+
9
+ bundle exec rails s -b 0.0.0.0
@@ -0,0 +1,9 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ if [ -f tmp/pids/server.pid ]; then
6
+ rm tmp/pids/server.pid
7
+ fi
8
+
9
+ bundle exec sidekiq
@@ -0,0 +1,66 @@
1
+ source "https://rubygems.org"
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
+
4
+ ruby "3.0.2"
5
+
6
+ # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
7
+ gem "rails", "~> 7.0.0.alpha2"
8
+
9
+ # Use postgresql as the database for Active Record
10
+ gem "pg", "~> 1.1"
11
+
12
+ # Use the Puma web server [https://github.com/puma/puma]
13
+ gem "puma", "~> 5.0"
14
+
15
+ # Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]
16
+ gem "importmap-rails", ">= 0.3.4"
17
+
18
+ # Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
19
+ gem "turbo-rails", ">= 0.7.11"
20
+
21
+ # Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]
22
+ gem "stimulus-rails", ">= 0.4.0"
23
+
24
+ # Build JSON APIs with ease [https://github.com/rails/jbuilder]
25
+ gem "jbuilder", "~> 2.7"
26
+
27
+ # Use Redis adapter to run Action Cable in production
28
+ # gem "redis", "~> 4.0"
29
+
30
+ # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
31
+ gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ]
32
+
33
+ # Reduces boot times through caching; required in config/boot.rb
34
+ gem "bootsnap", ">= 1.4.4", require: false
35
+
36
+ # Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword]
37
+ # gem "bcrypt", "~> 3.1.7"
38
+
39
+ # Use Sass to process CSS
40
+ # gem "sassc-rails", "~> 2.1"
41
+
42
+ # Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images]
43
+ # gem "image_processing", "~> 1.2"
44
+
45
+ group :development, :test do
46
+ # Start debugger with binding.b [https://github.com/ruby/debug]
47
+ gem "debug", ">= 1.0.0", platforms: %i[ mri mingw x64_mingw ]
48
+ end
49
+
50
+ group :development do
51
+ # Use console on exceptions pages [https://github.com/rails/web-console]
52
+ gem "web-console", ">= 4.1.0"
53
+
54
+ # Add speed badges [https://github.com/MiniProfiler/rack-mini-profiler]
55
+ # gem "rack-mini-profiler", ">= 2.3.3"
56
+
57
+ # Speed up commands on slow machines / big apps [https://github.com/rails/spring]
58
+ # gem "spring"
59
+ end
60
+
61
+ group :test do
62
+ # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
63
+ gem "capybara", ">= 3.26"
64
+ gem "selenium-webdriver"
65
+ gem "webdrivers"
66
+ end
@@ -0,0 +1,37 @@
1
+ require 'test_helper'
2
+
3
+ describe 'lib roro stacks catalog unstoppable developer_styles okonomi languages ruby stories rails versions 7_0' do
4
+ Given(:workbench) { 'empty' }
5
+ Given(:cli) { Roro::CLI.new }
6
+ Given(:adventures) { %w[ 2 2 1 1 ] }
7
+ Given(:overrides) { %w[] }
8
+
9
+ Given(:rollon) {
10
+ copy_stage_dummy(__dir__)
11
+ stubs_dependencies_met?
12
+ stubs_yes?
13
+ stub_adventure
14
+ stub_overrides
15
+ stub_run_actions
16
+ # quiet { cli.rollon }
17
+ cli.rollon
18
+ }
19
+
20
+ Given { rollon unless adventures.empty?}
21
+
22
+ describe 'must generate a' do
23
+ describe 'Gemfile with the correct rails version' do
24
+ Then { assert_file 'Gemfile', /gem \"rails\", \"~> 7.0.0.alpha2/ }
25
+ end
26
+
27
+ describe 'Dockerfile' do
28
+ describe 'ruby version' do
29
+ Then { assert_file 'Dockerfile', /FROM ruby:3.0/ }
30
+ end
31
+
32
+ describe 'yarn install command' do
33
+ Then { assert_file 'Dockerfile', /RUN yarn install/ }
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1 +1,4 @@
1
- preface: Choose what you like.
1
+ preface: Choose what you like.
2
+
3
+ actions:
4
+ - directory 'stage_one/.dockerignore', '.'
@@ -0,0 +1,18 @@
1
+ .DS_Store
2
+ .bin
3
+ .git
4
+ .gitignore
5
+ .bundleignore
6
+ .bundle
7
+ .byebug_history
8
+ .rspec
9
+ tmp
10
+ log
11
+ test
12
+ config/deploy
13
+ public/packs
14
+ public/packs-test
15
+ node_modules
16
+ yarn-error.log
17
+ coverage/
18
+ .env
@@ -1,5 +1,5 @@
1
1
  # env - PROD or DEV
2
- ENV=PROD
2
+ ENV=DEV
3
3
 
4
4
  # wordpress
5
5
  WORDPRESS_IMAGE=wordpress
@@ -4,23 +4,15 @@ describe 'lib roro stacks catalog unstoppable developer_styles omakase stories w
4
4
  Given(:workbench) { 'empty' }
5
5
  Given(:cli) { Roro::CLI.new }
6
6
  Given(:adventures) { %w[3 2] }
7
- Given(:overrides) { %w[] }
8
-
7
+ Given(:overrides) { [''] }
9
8
  Given(:rollon) {
10
- ## Answers adventure questions according to values set in the :adventures array.
11
9
  stub_adventure
12
- ## Answers environment variable questions according to values set in
13
- # the overrides array. Defaults to 'y'.
14
10
  stub_overrides
15
- ## Ensures Thor run commands are stubbed.
16
11
  stub_run_actions
17
12
  cli.rollon
18
- ## To quiet the test output do:
19
- # quiet { cli.rollon }
20
13
  }
21
14
 
22
- ## Tests will hang if the :adventures array is empty.
23
- Given { rollon unless adventures.empty?}
15
+ Given { quiet { rollon } unless adventures.empty?}
24
16
 
25
17
  describe 'must have docker-compose.yml file' do
26
18
  Then { assert_file 'docker-compose.yml' }
@@ -1 +1 @@
1
- preface: Fast food.
1
+ preface: Raw fish.
@@ -0,0 +1,32 @@
1
+ preface: some string
2
+
3
+ env:
4
+ base:
5
+ do_cluster_name:
6
+ name: Digital Ocean Kubernetes cluster name
7
+ value: k8s-1-21-5-do-0-nyc1-1635194329871
8
+ help: https://docs.digitalocean.com/products/kubernetes/how-to/connect-to-cluster/
9
+ domain_name:
10
+ name: Domain name people will use to find your app
11
+ value: bierstiefel.com
12
+ do_cluster_id:
13
+ name:
14
+ Digital Ocean Kubernetes cluster id
15
+ value: df160ada-6534-44db-bb77-282dd7b812ad
16
+ help: https://docs.digitalocean.com/reference/doctl/reference/kubernetes/cluster/get/
17
+ cert_email:
18
+ name: Email address to put on your Let's Encrypt certificate
19
+ value: localpart@domain.tld
20
+ required: true
21
+ actions:
22
+ - directory 'stage_one', '.', @env
23
+ - run "doctl kubernetes cluster kubeconfig save \"#{@env[:base][:do_cluster_name][:value]}\""
24
+ - run "kubectl config current-context"
25
+ - run "kubectl config get-contexts"
26
+ - run "kubectl apply -f echo1.yaml"
27
+ - run "kubectl apply -f echo2.yaml"
28
+ - run "kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/do/deploy.yaml"
29
+ - run "kubectl get svc"
30
+ # - run "kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx"
31
+ # - run "doctl compute domain records list \"#{@env[:base][:do_cluster_name][:value]}\""
32
+ # - run "kubectl apply -f echo_ingress.yaml"
@@ -0,0 +1,32 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ name: echo1
5
+ spec:
6
+ ports:
7
+ - port: 80
8
+ targetPort: 5678
9
+ selector:
10
+ app: echo1
11
+ ---
12
+ apiVersion: apps/v1
13
+ kind: Deployment
14
+ metadata:
15
+ name: echo1
16
+ spec:
17
+ selector:
18
+ matchLabels:
19
+ app: echo1
20
+ replicas: 2
21
+ template:
22
+ metadata:
23
+ labels:
24
+ app: echo1
25
+ spec:
26
+ containers:
27
+ - name: echo1
28
+ image: hashicorp/http-echo
29
+ args:
30
+ - "-text=echo1"
31
+ ports:
32
+ - containerPort: 5678
@@ -0,0 +1,32 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ name: echo2
5
+ spec:
6
+ ports:
7
+ - port: 80
8
+ targetPort: 5678
9
+ selector:
10
+ app: echo2
11
+ ---
12
+ apiVersion: apps/v1
13
+ kind: Deployment
14
+ metadata:
15
+ name: echo2
16
+ spec:
17
+ selector:
18
+ matchLabels:
19
+ app: echo2
20
+ replicas: 1
21
+ template:
22
+ metadata:
23
+ labels:
24
+ app: echo2
25
+ spec:
26
+ containers:
27
+ - name: echo2
28
+ image: hashicorp/http-echo
29
+ args:
30
+ - "-text=echo2"
31
+ ports:
32
+ - containerPort: 5678
@@ -0,0 +1,18 @@
1
+ apiVersion: networking.k8s.io/v1
2
+ kind: Ingress
3
+ metadata:
4
+ name: echo-ingress
5
+ spec:
6
+ rules:
7
+ - host: echo1.<%= @env[:base][:domain_name][:value] %>
8
+ http:
9
+ paths:
10
+ - backend:
11
+ serviceName: echo1
12
+ servicePort: 80
13
+ - host: echo2.<%= @env[:base][:domain_name][:value] %>
14
+ http:
15
+ paths:
16
+ - backend:
17
+ serviceName: echo2
18
+ servicePort: 80
@@ -0,0 +1,19 @@
1
+ apiVersion: cert-manager.io/v1alpha2
2
+ kind: ClusterIssuer
3
+ metadata:
4
+ name: letsencrypt-prod
5
+ namespace: cert-manager
6
+ spec:
7
+ acme:
8
+ # The ACME server URL
9
+ server: https://acme-v02.api.letsencrypt.org/directory
10
+ # Email address used for ACME registration
11
+ email: <%= @env[:base][:cert_email][:value] %>
12
+ # Name of a secret used to store the ACME account private key
13
+ privateKeySecretRef:
14
+ name: letsencrypt-prod
15
+ # Enable the HTTP-01 challenge provider
16
+ solvers:
17
+ - http01:
18
+ ingress:
19
+ class: nginx
@@ -0,0 +1,19 @@
1
+ apiVersion: cert-manager.io/v1alpha2
2
+ kind: ClusterIssuer
3
+ metadata:
4
+ name: letsencrypt-staging
5
+ namespace: cert-manager
6
+ spec:
7
+ acme:
8
+ # The ACME server URL
9
+ server: https://acme-staging-v02.api.letsencrypt.org/directory
10
+ # Email address used for ACME registration
11
+ email: <%= @env[:base][:cert_email][:value] %>
12
+ # Name of a secret used to store the ACME account private key
13
+ privateKeySecretRef:
14
+ name: letsencrypt-staging
15
+ # Enable the HTTP-01 challenge provider
16
+ solvers:
17
+ - http01:
18
+ ingress:
19
+ class: nginx
@@ -0,0 +1,25 @@
1
+ apiVersion: networking.k8s.io/v1beta1
2
+ kind: Ingress
3
+ metadata:
4
+ name: echo-ingress
5
+ annotations:
6
+ cert-manager.io/cluster-issuer: "letsencrypt-staging"
7
+ spec:
8
+ tls:
9
+ - hosts:
10
+ - echo1.<%= @env[:base][:domain_name][:value] %>
11
+ - echo2.<%= @env[:base][:domain_name][:value] %>
12
+ secretName: echo-tls
13
+ rules:
14
+ - host: echo1.<%= @env[:base][:domain_name][:value] %>
15
+ http:
16
+ paths:
17
+ - backend:
18
+ serviceName: echo1
19
+ servicePort: 80
20
+ - host: echo2.example.com
21
+ http:
22
+ paths:
23
+ - backend:
24
+ serviceName: echo2
25
+ servicePort: 80