rockstart 0.1.0 → 0.1.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 (240) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -0
  3. data/lib/generators/rockstart/authorization/USAGE +9 -0
  4. data/lib/generators/rockstart/authorization/auth0/USAGE +10 -0
  5. data/lib/generators/rockstart/authorization/auth0/auth0_generator.rb +49 -0
  6. data/lib/generators/rockstart/authorization/auth0/templates/app/controllers/auth_controller.rb.tt +47 -0
  7. data/lib/generators/rockstart/authorization/auth0/templates/app/controllers/concerns/session_auth.rb +23 -0
  8. data/lib/generators/rockstart/authorization/auth0/templates/app/models/user.rb.tt +82 -0
  9. data/lib/generators/rockstart/authorization/auth0/templates/app/views/auth/new.html.erb +3 -0
  10. data/lib/generators/rockstart/authorization/auth0/templates/app/views/auth/sign_out.html.erb +1 -0
  11. data/lib/generators/rockstart/authorization/auth0/templates/auth0.en.yml +5 -0
  12. data/lib/generators/rockstart/authorization/auth0/templates/auth0_initializer.rb +27 -0
  13. data/lib/generators/rockstart/authorization/auth0/templates/auth0_util.rb.tt +38 -0
  14. data/lib/generators/rockstart/authorization/auth0/templates/auth0_util_spec.rb +21 -0
  15. data/lib/generators/rockstart/authorization/auth0/templates/spec/factories/users.rb.tt +32 -0
  16. data/lib/generators/rockstart/authorization/auth0/templates/spec/models/user_spec.rb.tt +91 -0
  17. data/lib/generators/rockstart/authorization/auth0/templates/spec/requests/auth_spec.rb +94 -0
  18. data/lib/generators/rockstart/authorization/auth0/templates/spec/support/auth_request_helper.rb +27 -0
  19. data/lib/generators/rockstart/authorization/authorization_generator.rb +29 -0
  20. data/lib/generators/rockstart/{devise → authorization/devise}/USAGE +3 -1
  21. data/lib/generators/rockstart/authorization/devise/devise_generator.rb +208 -0
  22. data/lib/generators/rockstart/authorization/devise/templates/add_devise_to_users_migration.rb.tt +50 -0
  23. data/lib/generators/rockstart/{devise → authorization/devise}/templates/controllers/passwords_controller.rb +0 -0
  24. data/lib/generators/rockstart/{devise → authorization/devise}/templates/controllers/registrations_controller.rb +0 -0
  25. data/lib/generators/rockstart/{devise → authorization/devise}/templates/controllers/sessions_controller.rb +0 -0
  26. data/lib/generators/rockstart/{devise → authorization/devise}/templates/create_user_migration.rb.tt +0 -0
  27. data/lib/generators/rockstart/{devise → authorization/devise}/templates/models/user.rb +14 -2
  28. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/factories/users.rb +0 -0
  29. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/models/user_spec.rb +9 -21
  30. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/requests/users/passwords_spec.rb +0 -0
  31. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/requests/users/registrations_spec.rb +2 -11
  32. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/requests/users/sessions_spec.rb +1 -38
  33. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/support/devise_request_spec_helper.rb +0 -0
  34. data/lib/generators/rockstart/{devise → authorization/devise}/templates/translations.en.yml +0 -0
  35. data/lib/generators/rockstart/{pundit → authorization/pundit}/USAGE +1 -1
  36. data/lib/generators/rockstart/authorization/pundit/pundit_generator.rb +41 -0
  37. data/lib/generators/rockstart/{pundit → authorization/pundit}/templates/app/controllers/concerns/pundit_error_handling.rb +0 -0
  38. data/lib/generators/rockstart/{pundit → authorization/pundit}/templates/app/policies/application_policy.rb +0 -0
  39. data/lib/generators/rockstart/{pundit/templates/app/policies/user_policy.rb → authorization/pundit/templates/app/policies/user_policy.rb.tt} +4 -0
  40. data/lib/generators/rockstart/{pundit → authorization/pundit}/templates/config/locales/pundit.en.yml +0 -0
  41. data/lib/generators/rockstart/authorization/pundit/templates/lib/admin_constraint.rb +11 -0
  42. data/lib/generators/rockstart/{pundit/templates/lib/templates/pundit/policy/policy.rb → authorization/pundit/templates/scaffold/policy.rb.tt} +0 -0
  43. data/lib/generators/rockstart/{pundit/templates/lib/templates/rspec/policy/policy_spec.rb → authorization/pundit/templates/scaffold/policy_spec.rb.tt} +0 -0
  44. data/lib/generators/rockstart/{pundit/templates/spec/policies/user_policy_spec.rb → authorization/pundit/templates/spec/policies/user_policy_spec.rb.tt} +43 -5
  45. data/lib/generators/rockstart/{pundit → authorization/pundit}/templates/spec/support/pundit_matchers.rb +0 -0
  46. data/lib/generators/rockstart/deployment/USAGE +8 -0
  47. data/lib/generators/rockstart/deployment/deployment_generator.rb +78 -0
  48. data/lib/generators/rockstart/{docker → deployment/docker}/USAGE +0 -0
  49. data/lib/generators/rockstart/deployment/docker/docker_generator.rb +70 -0
  50. data/lib/generators/rockstart/{docker → deployment/docker}/templates/app/Dockerfile-app +6 -5
  51. data/lib/generators/rockstart/{docker → deployment/docker}/templates/docker-compose.test.yml +5 -2
  52. data/lib/generators/rockstart/deployment/docker/templates/docker-compose.yml +74 -0
  53. data/lib/generators/rockstart/{docker → deployment/docker}/templates/dockerignore +0 -0
  54. data/lib/generators/rockstart/deployment/docker/templates/dotenv.docker-db.tt +3 -0
  55. data/lib/generators/rockstart/deployment/docker/templates/dotenv.docker.tt +20 -0
  56. data/lib/generators/rockstart/{docker → deployment/docker}/templates/web/Dockerfile-web +0 -0
  57. data/lib/generators/rockstart/{docker → deployment/docker}/templates/web/nginx.conf +24 -1
  58. data/lib/generators/rockstart/deployment/heroku/USAGE +9 -0
  59. data/lib/generators/rockstart/deployment/heroku/heroku_generator.rb +50 -0
  60. data/lib/generators/rockstart/deployment/heroku/templates/Procfile.tt +5 -0
  61. data/lib/generators/rockstart/deployment/heroku/templates/app.json.tt +50 -0
  62. data/lib/generators/rockstart/deployment/heroku/templates/deploy-heroku.tt +42 -0
  63. data/lib/generators/rockstart/deployment/heroku/templates/heroku.rake.tt +25 -0
  64. data/lib/generators/rockstart/deployment/heroku/templates/slugignore +3 -0
  65. data/lib/generators/rockstart/deployment/nginx/USAGE +8 -0
  66. data/lib/generators/rockstart/deployment/nginx/nginx_generator.rb +20 -0
  67. data/lib/generators/rockstart/deployment/templates/hooks-postdeploy.tt +22 -0
  68. data/lib/generators/rockstart/deployment/templates/hooks-release.tt +17 -0
  69. data/lib/generators/rockstart/deployment/templates/rack_deflater_spec.rb +28 -0
  70. data/lib/generators/rockstart/deployment/templates/web.tt +3 -0
  71. data/lib/generators/rockstart/deployment/templates/worker.tt +3 -0
  72. data/lib/generators/rockstart/development/USAGE +10 -0
  73. data/lib/generators/rockstart/development/audited/USAGE +10 -0
  74. data/lib/generators/rockstart/development/audited/audited_generator.rb +35 -0
  75. data/lib/generators/rockstart/development/audited/templates/audit.rb.tt +35 -0
  76. data/lib/generators/rockstart/development/audited/templates/audit_spec.rb.tt +54 -0
  77. data/lib/generators/rockstart/development/audited/templates/audited_initializer.rb +5 -0
  78. data/lib/generators/rockstart/development/audited/templates/audited_support.rb +3 -0
  79. data/lib/generators/rockstart/development/audited/templates/install_audited.rb.tt +45 -0
  80. data/lib/generators/rockstart/development/development_generator.rb +42 -0
  81. data/lib/generators/rockstart/development/env/USAGE +8 -0
  82. data/lib/generators/rockstart/development/env/env_generator.rb +17 -0
  83. data/lib/generators/rockstart/development/env/templates/dotenv.development.tt +4 -0
  84. data/lib/generators/rockstart/development/friendly_id/USAGE +8 -0
  85. data/lib/generators/rockstart/development/friendly_id/friendly_id_generator.rb +15 -0
  86. data/lib/generators/rockstart/development/friendly_id/templates/friendly_id_initializer.rb +52 -0
  87. data/lib/generators/rockstart/development/generator_overrides/USAGE +8 -0
  88. data/lib/generators/rockstart/development/generator_overrides/generator_overrides_generator.rb +31 -0
  89. data/lib/generators/rockstart/development/generator_overrides/templates/resource_route_generator.rb.tt +54 -0
  90. data/lib/generators/rockstart/development/localhost_setup/USAGE +8 -0
  91. data/lib/generators/rockstart/development/localhost_setup/localhost_setup_generator.rb +34 -0
  92. data/lib/generators/rockstart/{docker → development/localhost_setup}/templates/localhost_domains.ext.tt +0 -0
  93. data/lib/generators/rockstart/{docker → development/localhost_setup}/templates/setup-localhost.tt +5 -5
  94. data/lib/generators/rockstart/development/readme/USAGE +8 -0
  95. data/lib/generators/rockstart/development/readme/readme_generator.rb +18 -0
  96. data/lib/generators/rockstart/development/readme/templates/README.md +74 -0
  97. data/lib/generators/rockstart/development/rebuild/USAGE +8 -0
  98. data/lib/generators/rockstart/development/rebuild/rebuild_generator.rb +21 -0
  99. data/lib/generators/rockstart/development/rebuild/templates/rockstart.tt +28 -0
  100. data/lib/generators/rockstart/{scaffold_templates → development/scaffolds}/USAGE +1 -1
  101. data/lib/generators/rockstart/development/scaffolds/scaffolds_generator.rb +46 -0
  102. data/lib/generators/rockstart/{scaffold_templates → development/scaffolds}/templates/api_controller.rb.tt +15 -7
  103. data/lib/generators/rockstart/{scaffold_templates → development/scaffolds}/templates/controller.rb.tt +18 -9
  104. data/lib/generators/rockstart/development/scaffolds/templates/factory_bot/factories.erb +8 -0
  105. data/lib/generators/rockstart/development/scaffolds/templates/model.rb.tt +61 -0
  106. data/lib/generators/rockstart/development/scaffolds/templates/rspec/api_request_spec.rb.tt +142 -0
  107. data/lib/generators/rockstart/development/scaffolds/templates/rspec/model_spec.rb.tt +35 -0
  108. data/lib/generators/rockstart/development/scaffolds/templates/rspec/request_spec.rb.tt +492 -0
  109. data/lib/generators/rockstart/frontend_app/USAGE +10 -0
  110. data/lib/generators/rockstart/frontend_app/application_urls/USAGE +8 -0
  111. data/lib/generators/rockstart/frontend_app/application_urls/application_urls_generator.rb +28 -0
  112. data/lib/generators/rockstart/{frontend_helpers → frontend_app/application_urls}/templates/application_urls.rb +0 -0
  113. data/lib/generators/rockstart/{frontend_helpers → frontend_app/application_urls}/templates/application_urls_helper.rb +0 -0
  114. data/lib/generators/rockstart/frontend_app/assets/USAGE +8 -0
  115. data/lib/generators/rockstart/frontend_app/assets/assets_generator.rb +11 -0
  116. data/lib/generators/rockstart/frontend_app/assets/templates/assets.rake +22 -0
  117. data/lib/generators/rockstart/frontend_app/frontend_app_generator.rb +38 -0
  118. data/lib/generators/rockstart/frontend_app/simple_form/USAGE +8 -0
  119. data/lib/generators/rockstart/frontend_app/simple_form/simple_form_generator.rb +9 -0
  120. data/lib/generators/rockstart/frontend_app/titles/USAGE +8 -0
  121. data/lib/generators/rockstart/{frontend_helpers → frontend_app/titles}/templates/titles.en.yml.tt +0 -0
  122. data/lib/generators/rockstart/frontend_app/titles/titles_generator.rb +22 -0
  123. data/lib/generators/rockstart/gemset/USAGE +8 -0
  124. data/lib/generators/rockstart/gemset/gemset_generator.rb +129 -0
  125. data/lib/generators/rockstart/mailers/USAGE +8 -0
  126. data/lib/generators/rockstart/mailers/mailers_generator.rb +7 -0
  127. data/lib/generators/rockstart/{smtp_mailer → mailers/smtp_mailer}/USAGE +0 -0
  128. data/lib/generators/rockstart/mailers/smtp_mailer/smtp_mailer_generator.rb +36 -0
  129. data/lib/generators/rockstart/{smtp_mailer/templates/config/initializers/action_mailer.rb → mailers/smtp_mailer/templates/action_mailer_initializer.rb} +0 -0
  130. data/lib/generators/rockstart/monitoring/USAGE +8 -0
  131. data/lib/generators/rockstart/{logging → monitoring/lograge}/USAGE +1 -1
  132. data/lib/generators/rockstart/monitoring/lograge/lograge_generator.rb +19 -0
  133. data/lib/generators/rockstart/monitoring/lograge/templates/lograge_initializer.rb +44 -0
  134. data/lib/generators/rockstart/monitoring/lograge/templates/lograge_util.rb +42 -0
  135. data/lib/generators/rockstart/monitoring/monitoring_generator.rb +35 -0
  136. data/lib/generators/rockstart/monitoring/okcomputer/USAGE +8 -0
  137. data/lib/generators/rockstart/monitoring/okcomputer/okcomputer_generator.rb +28 -0
  138. data/lib/generators/rockstart/monitoring/okcomputer/templates/okcomputer.en.yml +5 -0
  139. data/lib/generators/rockstart/monitoring/okcomputer/templates/okcomputer_initializer.rb.tt +34 -0
  140. data/lib/generators/rockstart/monitoring/okcomputer/templates/okcomputer_spec.rb +62 -0
  141. data/lib/generators/rockstart/monitoring/rollbar/USAGE +8 -0
  142. data/lib/generators/rockstart/monitoring/rollbar/rollbar_generator.rb +20 -0
  143. data/lib/generators/rockstart/monitoring/rollbar/templates/rollbar_initializer.rb.tt +80 -0
  144. data/lib/generators/rockstart/monitoring/sidekiq_ui/USAGE +8 -0
  145. data/lib/generators/rockstart/monitoring/sidekiq_ui/sidekiq_ui_generator.rb +38 -0
  146. data/lib/generators/rockstart/monitoring/sidekiq_ui/templates/sidekiq_spec.rb +32 -0
  147. data/lib/generators/rockstart/quality/quality_generator.rb +5 -16
  148. data/lib/generators/rockstart/quality/rubocop/USAGE +11 -0
  149. data/lib/generators/rockstart/quality/rubocop/rubocop_generator.rb +23 -0
  150. data/lib/generators/rockstart/quality/rubocop/templates/rubocop.rake +19 -0
  151. data/lib/generators/rockstart/quality/{templates → rubocop/templates}/rubocop.yml +0 -0
  152. data/lib/generators/rockstart/rockstart_generator.rb +13 -65
  153. data/lib/generators/rockstart/run/USAGE +17 -0
  154. data/lib/generators/rockstart/run/run_generator.rb +73 -0
  155. data/lib/generators/rockstart/security/brakeman/USAGE +9 -0
  156. data/lib/generators/rockstart/security/brakeman/brakeman_generator.rb +15 -0
  157. data/lib/generators/rockstart/security/{templates → brakeman/templates}/brakeman.rake +1 -1
  158. data/lib/generators/rockstart/security/bundler_audit/USAGE +8 -0
  159. data/lib/generators/rockstart/security/bundler_audit/bundler_audit_generator.rb +11 -0
  160. data/lib/generators/rockstart/security/bundler_audit/templates/bundler_audit.rake +14 -0
  161. data/lib/generators/rockstart/security/content_security/USAGE +8 -0
  162. data/lib/generators/rockstart/security/content_security/content_security_generator.rb +41 -0
  163. data/lib/generators/rockstart/security/{templates → content_security/templates}/content_security_policy_initializer.rb.tt +2 -2
  164. data/lib/generators/rockstart/security/{templates → content_security/templates}/content_security_spec.rb.tt +12 -13
  165. data/lib/generators/rockstart/security/{templates/csp_violations_controller.rb → content_security/templates/csp_violations_controller.rb.tt} +14 -6
  166. data/lib/generators/rockstart/security/{templates → content_security/templates}/session_store_initializer.rb.tt +1 -2
  167. data/lib/generators/rockstart/security/rack_attack/USAGE +8 -0
  168. data/lib/generators/rockstart/security/rack_attack/rack_attack_generator.rb +37 -0
  169. data/lib/generators/rockstart/security/{templates → rack_attack/templates}/cache_support.rb +1 -1
  170. data/lib/generators/rockstart/security/{templates/rack_attack.rb → rack_attack/templates/rack_attack_initializer.rb.tt} +34 -1
  171. data/lib/generators/rockstart/security/rack_attack/templates/rack_attack_spec.rb.tt +116 -0
  172. data/lib/generators/rockstart/security/security_generator.rb +20 -84
  173. data/lib/generators/rockstart/storage/USAGE +8 -0
  174. data/lib/generators/rockstart/storage/active_storage/USAGE +8 -0
  175. data/lib/generators/rockstart/storage/active_storage/active_storage_generator.rb +59 -0
  176. data/lib/generators/rockstart/storage/active_storage/templates/active_storage_initializer.rb +9 -0
  177. data/lib/generators/rockstart/storage/active_storage/templates/better_s3_service.rb +27 -0
  178. data/lib/generators/rockstart/storage/active_storage/templates/cloudcube_util.rb +30 -0
  179. data/lib/generators/rockstart/storage/active_storage/templates/cloudcube_util_spec.rb +73 -0
  180. data/lib/generators/rockstart/storage/active_storage/templates/storage.yml.tt +15 -0
  181. data/lib/generators/rockstart/storage/memcached/USAGE +8 -0
  182. data/lib/generators/rockstart/storage/memcached/memcached_generator.rb +27 -0
  183. data/lib/generators/rockstart/{postgres → storage/postgres}/USAGE +1 -1
  184. data/lib/generators/rockstart/storage/postgres/postgres_generator.rb +20 -0
  185. data/lib/generators/rockstart/{postgres → storage/postgres}/templates/config/database.yml.tt +6 -0
  186. data/lib/generators/rockstart/{postgres → storage/postgres}/templates/migration.rb.tt +0 -0
  187. data/lib/generators/rockstart/storage/storage_generator.rb +26 -0
  188. data/lib/generators/rockstart/testing/USAGE +9 -0
  189. data/lib/generators/rockstart/testing/env/USAGE +8 -0
  190. data/lib/generators/rockstart/testing/env/env_generator.rb +24 -0
  191. data/lib/generators/rockstart/testing/env/templates/climate_control_helpers_support.rb +14 -0
  192. data/lib/generators/rockstart/testing/env/templates/dotenv.test.tt +8 -0
  193. data/lib/generators/rockstart/{rspec → testing/rspec}/USAGE +1 -1
  194. data/lib/generators/rockstart/testing/rspec/rspec_generator.rb +52 -0
  195. data/lib/generators/rockstart/{rspec → testing/rspec}/templates/support/factory_bot.rb +0 -0
  196. data/lib/generators/rockstart/{rspec → testing/rspec}/templates/support/shoulda_matchers.rb +0 -0
  197. data/lib/generators/rockstart/{rspec → testing/rspec}/templates/support/test_helpers.rb +0 -0
  198. data/lib/generators/rockstart/testing/rspec/templates/support/vcr.rb +11 -0
  199. data/lib/generators/rockstart/testing/simplecov/USAGE +9 -0
  200. data/lib/generators/rockstart/testing/simplecov/simplecov_generator.rb +11 -0
  201. data/lib/generators/rockstart/testing/testing_generator.rb +24 -0
  202. data/lib/generators/rockstart/workers/USAGE +8 -0
  203. data/lib/generators/rockstart/workers/sidekiq/USAGE +9 -0
  204. data/lib/generators/rockstart/workers/sidekiq/sidekiq_generator.rb +29 -0
  205. data/lib/generators/rockstart/workers/sidekiq/templates/sidekiq.yml.tt +5 -0
  206. data/lib/generators/rockstart/workers/sidekiq/templates/sidekiq_initializer.rb +5 -0
  207. data/lib/generators/rockstart/workers/workers_generator.rb +18 -0
  208. data/lib/rockstart/base_generator.rb +4 -5
  209. data/lib/rockstart/env.rb +3 -1
  210. data/lib/rockstart/generators/class_option_helpers.rb +154 -0
  211. data/lib/rockstart/generators/content_security_options.rb +61 -0
  212. data/lib/rockstart/generators/migration_helpers.rb +30 -0
  213. data/lib/rockstart/generators/system_helpers.rb +14 -0
  214. data/lib/rockstart/generators/template_helpers.rb +27 -0
  215. data/lib/rockstart/version.rb +1 -1
  216. metadata +212 -83
  217. data/lib/generators/rockstart/devise/devise_generator.rb +0 -258
  218. data/lib/generators/rockstart/docker/docker_generator.rb +0 -86
  219. data/lib/generators/rockstart/docker/templates/docker-compose.yml +0 -47
  220. data/lib/generators/rockstart/docker/templates/dotenv.docker.tt +0 -4
  221. data/lib/generators/rockstart/frontend_helpers/USAGE +0 -8
  222. data/lib/generators/rockstart/frontend_helpers/frontend_helpers_generator.rb +0 -65
  223. data/lib/generators/rockstart/logging/logging_generator.rb +0 -12
  224. data/lib/generators/rockstart/logging/templates/rockstart/lograge_initializer.rb +0 -50
  225. data/lib/generators/rockstart/postgres/postgres_generator.rb +0 -32
  226. data/lib/generators/rockstart/pundit/pundit_generator.rb +0 -32
  227. data/lib/generators/rockstart/quality/templates/rubocop.rake +0 -4
  228. data/lib/generators/rockstart/rspec/rspec_generator.rb +0 -70
  229. data/lib/generators/rockstart/rspec/templates/dotenv.development +0 -1
  230. data/lib/generators/rockstart/rspec/templates/dotenv.test +0 -1
  231. data/lib/generators/rockstart/rspec/templates/rspec_templates/model/model_spec.rb +0 -13
  232. data/lib/generators/rockstart/scaffold_templates/scaffold_templates_generator.rb +0 -39
  233. data/lib/generators/rockstart/scaffold_templates/templates/rspec/scaffold/api_request_spec.rb +0 -139
  234. data/lib/generators/rockstart/scaffold_templates/templates/rspec/scaffold/request_spec.rb +0 -408
  235. data/lib/generators/rockstart/security/templates/bundler_audit.rake +0 -4
  236. data/lib/generators/rockstart/smtp_mailer/smtp_mailer_generator.rb +0 -30
  237. data/lib/generators/rockstart/tailwindcss/USAGE +0 -8
  238. data/lib/generators/rockstart/tailwindcss/tailwindcss_generator.rb +0 -30
  239. data/lib/generators/rockstart/tailwindcss/templates/application.css +0 -3
  240. data/lib/generators/rockstart/tailwindcss/templates/postcss.config.js +0 -32
@@ -0,0 +1,10 @@
1
+ Description:
2
+ Installs common helpers for Frontend Apps
3
+
4
+ Example:
5
+ rails generate rockstart:frontend_app
6
+
7
+ This will create:
8
+ Installs simple_form
9
+ Installs the titles gem
10
+ Adds a common helper for application urls
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Builds a helper for managing application urls
3
+
4
+ Example:
5
+ rails generate rockstart:frontend_app:application_urls
6
+
7
+ This will create:
8
+ An Application Urls file containing editable links
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rockstart::FrontendApp
4
+ class ApplicationUrlsGenerator < Rails::Generators::Base
5
+ source_root File.expand_path("templates", __dir__)
6
+
7
+ def add_application_urls_concern
8
+ copy_file "application_urls.rb", application_urls_concern_path
9
+ inject_into_file "app/controllers/application_controller.rb",
10
+ " include ApplicationUrls\n",
11
+ before: /^end$/
12
+ end
13
+
14
+ def add_application_urls_helper
15
+ copy_file "application_urls_helper.rb", application_urls_helper_path
16
+ end
17
+
18
+ private
19
+
20
+ def application_urls_concern_path
21
+ File.join("app", "controllers", "concerns", "application_urls.rb")
22
+ end
23
+
24
+ def application_urls_helper_path
25
+ File.join("spec", "support", "application_urls_helper.rb")
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Configures Rails for handling assets
3
+
4
+ Example:
5
+ rails generate rockstart:frontend_app:assets
6
+
7
+ This will create:
8
+ adds a assets:rm_node_modules rake task for removing node modules
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rockstart::FrontendApp
4
+ class AssetsGenerator < Rails::Generators::Base
5
+ source_root File.expand_path("templates", __dir__)
6
+
7
+ def add_asset_rake_task
8
+ copy_file "assets.rake", "lib/tasks/assets.rake"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Adapted from https://github.com/heroku/heroku-buildpack-ruby/issues/792
4
+ namespace :assets do
5
+ desc "Remove 'node_modules' folder"
6
+ task rm_node_modules: :environment do
7
+ Rails.logger.info "Removing node_modules folder"
8
+ FileUtils.remove_dir("node_modules", true)
9
+ end
10
+ end
11
+
12
+ skip_clean = %w[no false n f].include?(ENV["WEBPACKER_PRECOMPILE"])
13
+
14
+ unless skip_clean
15
+ if Rake::Task.task_defined?("assets:clean")
16
+ Rake::Task["assets:clean"].enhance do
17
+ Rake::Task["assets:rm_node_modules"].invoke
18
+ end
19
+ else
20
+ Rake::Task.define_task("assets:clean" => "assets:rm_node_modules")
21
+ end
22
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/base_generator"
4
+
5
+ class Rockstart::FrontendAppGenerator < Rails::Generators::Base
6
+ source_root File.expand_path("templates", __dir__)
7
+
8
+ class_option :force_url_helpers, type: :boolean,
9
+ desc: "Force creation of blank Application URL Helpers",
10
+ default: false
11
+
12
+ def setup_assets
13
+ generate "rockstart:frontend_app:assets"
14
+ end
15
+
16
+ def add_simple_form
17
+ generate "rockstart:frontend_app:simple_form"
18
+ end
19
+
20
+ def install_titles
21
+ generate "rockstart:frontend_app:titles"
22
+ end
23
+
24
+ def add_application_urls
25
+ if !force_url_helpers? &&
26
+ File.exist?(Rails.root.join("app", "controllers", "concerns", "application_urls.rb"))
27
+ return # Don't override existing helpers
28
+ end
29
+
30
+ generate "rockstart:frontend_app:application_urls"
31
+ end
32
+
33
+ private
34
+
35
+ def force_url_helpers?
36
+ options.fetch(:force_url_helpers)
37
+ end
38
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Setups up Simple Form for a Frontend App
3
+
4
+ Example:
5
+ rails generate rockstart:frontend_app:simple_form
6
+
7
+ This will create:
8
+ Installs simple_form and overrides templates
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rockstart::FrontendApp
4
+ class SimpleFormGenerator < Rails::Generators::Base
5
+ def install_simple_form
6
+ generate "simple_form:install", "--skip"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Adds a helper for adding titles to a Layout
3
+
4
+ Example:
5
+ rails generate rockstart:frontend_app:titles
6
+
7
+ This will create:
8
+ Installs the titles gem
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rockstart::FrontendApp
4
+ class TitlesGenerator < Rails::Generators::Base
5
+ source_root File.expand_path("templates", __dir__)
6
+
7
+ def add_titles_locale
8
+ template "titles.en.yml.tt", "config/locales/titles.en.yml"
9
+ end
10
+
11
+ def update_application_template
12
+ gsub_file "app/views/layouts/application.html.erb", %r{\<title(.+)\</title},
13
+ "<title><%= title %></title"
14
+ end
15
+
16
+ private
17
+
18
+ def default_title
19
+ Rails.application.class.to_s.split("::").first
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Installs all gems requested by rockstart
3
+
4
+ Example:
5
+ rails generate rockstart:gemset
6
+
7
+ This will create:
8
+ All gems requested by rockstart generators
@@ -0,0 +1,129 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/class_option_helpers"
4
+ require "rockstart/generators/content_security_options"
5
+ require "rockstart/generators/system_helpers"
6
+
7
+ class Rockstart::GemsetGenerator < Rails::Generators::Base
8
+ include Rockstart::Generators::ClassOptionHelpers
9
+ include Rockstart::Generators::ContentSecurityOptions
10
+ include Rockstart::Generators::SystemHelpers
11
+
12
+ all_class_options
13
+
14
+ def install_gems
15
+ gem "namae"
16
+ end
17
+
18
+ def install_auth0_gems
19
+ return unless auth0?
20
+
21
+ gem "omniauth-auth0", "~> 2.2"
22
+ gem "omniauth-rails_csrf_protection", "~> 0.1"
23
+ end
24
+
25
+ def install_devise_gems
26
+ return unless devise?
27
+
28
+ gem "devise"
29
+ end
30
+
31
+ def install_memcached_gems
32
+ return unless memcached?
33
+
34
+ gem "dalli"
35
+ gem "connection_pool"
36
+ end
37
+
38
+ def install_postgres_gems
39
+ return unless postgres?
40
+
41
+ gem "zero_downtime_migrations"
42
+ end
43
+
44
+ def install_active_storage_gems
45
+ gem "aws-sdk-s3", require: false
46
+ end
47
+
48
+ def install_sidekiq_gems
49
+ return unless sidekiq?
50
+
51
+ gem "sidekiq"
52
+ end
53
+
54
+ def install_pundit_gems
55
+ return unless pundit?
56
+
57
+ gem "pundit"
58
+ gem "pundit-matchers", group: :test
59
+ end
60
+
61
+ def install_frontend_gems
62
+ return unless frontend?
63
+
64
+ gem "simple_form"
65
+ gem "title", github: "calebthompson/title"
66
+ end
67
+
68
+ def install_development_gems
69
+ gem "acts_as_list"
70
+ gem "audited", "~> 4.9"
71
+ gem "friendly_id"
72
+ gem "kaminari"
73
+ end
74
+
75
+ def install_lograge_gems
76
+ gem "lograge"
77
+ gem "logstash-event"
78
+ end
79
+
80
+ def install_rollbar_gems
81
+ return unless rollbar?
82
+
83
+ gem "rollbar", "~> 2.25.0"
84
+ end
85
+
86
+ def install_okcomputer_gems
87
+ gem "okcomputer"
88
+ end
89
+
90
+ def install_rubocop_gems
91
+ gem "rubocop-rails", require: false, group: %i[development test]
92
+ end
93
+
94
+ def install_security_gems
95
+ gem "brakeman", group: %i[development test]
96
+ gem "bundler-audit", github: "rubysec/bundler-audit", group: %i[development test]
97
+ gem "ip_anonymizer"
98
+ gem "rack-attack"
99
+ end
100
+
101
+ def install_testing_gems
102
+ gem "climate_control", group: :test
103
+ gem "webmock", group: :test
104
+ gem "vcr", group: :test
105
+ end
106
+
107
+ def install_rspec_gems
108
+ gem "capybara", ">= 2.15", group: :test
109
+ gem "dotenv-rails", groups: %i[development test]
110
+ gem "factory_bot_rails", group: %i[development test]
111
+ gem "faker", group: %i[development test]
112
+ gem "rspec-rails", "~> 4.0.0", group: %i[development test]
113
+ gem "shoulda-matchers", group: :test
114
+ end
115
+
116
+ def install_simplecov_gems
117
+ gem "simplecov", group: :test
118
+ end
119
+
120
+ def remove_unused_tzinfo
121
+ comment_lines "Gemfile", /gem ['"]tzinfo-data['"]/
122
+ end
123
+
124
+ def bundle_install
125
+ Bundler.with_clean_env do
126
+ system! "bundle install"
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Gets your Emails ready to Rock
3
+
4
+ Example:
5
+ rails generate rockstart:mailers
6
+
7
+ This will create:
8
+ SMTP Mailers
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Rockstart::MailersGenerator < Rails::Generators::Base
4
+ def add_smtp_mailer
5
+ generate "rockstart:mailers:smtp_mailer"
6
+ end
7
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/template_helpers"
4
+
5
+ module Rockstart::Mailers
6
+ class SmtpMailerGenerator < Rails::Generators::Base
7
+ include Rockstart::Generators::TemplateHelpers
8
+
9
+ source_root File.expand_path("templates", __dir__)
10
+
11
+ def configure_test_environment
12
+ application(nil, env: :test) do
13
+ 'config.action_mailer.default_url_options = { host: "www.example.com" }'
14
+ end
15
+ end
16
+
17
+ def configure_development_environment
18
+ application(nil, env: :development) do
19
+ 'config.action_mailer.default_url_options = { host: "localhost", port: 3000 }'
20
+ end
21
+ end
22
+
23
+ def configure_production_environment
24
+ application(nil, env: :production) do
25
+ <<~MAILER
26
+ config.action_mailer.default_url_options = { host: ENV["APP_HOST"] }
27
+ config.action_mailer.delivery_method = :smtp
28
+ MAILER
29
+ end
30
+ end
31
+
32
+ def add_initializers
33
+ copy_initializer "action_mailer"
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Keeps an eye on your App while it's Rocking
3
+
4
+ Example:
5
+ rails generate rockstart:monitoring
6
+
7
+ This will create:
8
+ Format controller logs using Lograge
@@ -2,7 +2,7 @@ Description:
2
2
  Adds better logging to a rails application
3
3
 
4
4
  Example:
5
- rails generate rockstart:logging
5
+ rails generate rockstart:monitoring:lograge
6
6
 
7
7
  This will create:
8
8
  - Adds and configures lograge
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/template_helpers"
4
+
5
+ module Rockstart::Monitoring
6
+ class LogrageGenerator < Rails::Generators::Base
7
+ include Rockstart::Generators::TemplateHelpers
8
+
9
+ source_root File.expand_path("templates", __dir__)
10
+
11
+ def add_lograge_util
12
+ copy_file "lograge_util.rb", "lib/lograge_util.rb"
13
+ end
14
+
15
+ def install_lograge
16
+ copy_initializer "lograge"
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "lograge_util"
4
+
5
+ Rails.application.configure do
6
+ config.lograge.enabled = true
7
+ config.lograge.formatter = Lograge::Formatters::Logstash.new
8
+
9
+ # Update if using Rails in API mode
10
+ # config.lograge.base_controller_class = ['ActionController::API', 'ActionController::Base']
11
+
12
+ config.lograge.custom_options = lambda do |event|
13
+ exceptions = %w[controller action format id]
14
+ {
15
+ params: event.payload[:params].except(*exceptions)
16
+ }
17
+ end
18
+
19
+ config.lograge.custom_payload do |controller|
20
+ {
21
+ host: controller.request.host,
22
+ remote_ip: IpAnonymizer.mask_ip(controller.request.remote_ip),
23
+ request_id: controller.request.request_id
24
+ }.tap do |payload|
25
+ if controller.respond_to?(:current_user)
26
+ payload[:user_id] = controller.current_user&.id || :guest
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ # rubocop:disable Layout/LineLength
33
+ # Report for rack-attack throttle responses in lograge
34
+ ActiveSupport::Notifications.subscribe("throttle.rack_attack") do |name, start, finish, request_id, payload|
35
+ logger = Lograge.logger.presence || Rails.logger
36
+ logger.warn LogrageUtil.format_rack_attack_throttle(name, start, finish, request_id, payload)
37
+ end
38
+
39
+ # Report for rack-attack blocklist responses in lograge
40
+ ActiveSupport::Notifications.subscribe("blocklist.rack_attack") do |name, start, finish, request_id, payload|
41
+ logger = Lograge.logger.presence || Rails.logger
42
+ logger.warn LogrageUtil.format_rack_attack_blocklist(name, start, finish, request_id, payload)
43
+ end
44
+ # rubocop:enable Layout/LineLength