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
@@ -1,258 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rockstart/base_generator"
4
-
5
- class Rockstart::DeviseGenerator < Rockstart::BaseGenerator
6
- include Rails::Generators::Migration
7
-
8
- # Implement the required interface for Rails::Generators::Migration.
9
- def self.next_migration_number(dirname)
10
- next_migration_number = current_migration_number(dirname) + 1
11
- ActiveRecord::Migration.next_migration_number(next_migration_number)
12
- end
13
-
14
- source_root File.expand_path("templates", __dir__)
15
-
16
- class_option :devise_layout, type: :string,
17
- desc: "Custom layout used by all devise controllers",
18
- default: "application"
19
-
20
- class_option :pundit, type: :boolean,
21
- desc: "Include Pundit support",
22
- default: true
23
-
24
- class_option :skip_controllers, type: :boolean,
25
- desc: "Skip Generating custom Devise Controllers",
26
- default: false
27
-
28
- class_option :skip_migration, type: :boolean,
29
- desc: "Skip create user model migration generation",
30
- default: false
31
-
32
- class_option :skip_model, type: :boolean,
33
- desc: "Skip model generation",
34
- default: false
35
-
36
- def add_namae_gem
37
- gem "namae"
38
- end
39
-
40
- def add_user_model
41
- directory "models", "app/models"
42
- end
43
-
44
- def add_user_migration
45
- return if options[:skip_migration]
46
-
47
- migration_template "create_user_migration.rb.tt", "db/migrate/create_users.rb"
48
- end
49
-
50
- def install_devise
51
- gem "devise"
52
-
53
- bundle_install do
54
- Dir.mktmpdir do |dir|
55
- generate_devise_install(dir)
56
- directory File.join(dir, "config"), "config"
57
- end
58
- end
59
- end
60
-
61
- def add_devise_controllers
62
- return if options[:skip_controllers]
63
-
64
- Bundler.with_clean_env do
65
- Dir.mktmpdir do |dir|
66
- generate_devise_controllers(dir)
67
- add_pundit_support(dir) if options[:pundit]
68
- devise_controllers.each do |controller|
69
- copy_file File.join(dir, controller_path(controller)), controller_path(controller)
70
- end
71
- end
72
- end
73
- end
74
-
75
- def generate_user_model
76
- return if options[:skip_model]
77
-
78
- Bundler.with_clean_env do
79
- generate "devise", "User"
80
- end
81
- end
82
-
83
- def inject_routes
84
- return if options[:skip_controllers]
85
-
86
- controller_templates = devise_controllers.map do |controller|
87
- " #{controller}: \"users/#{controller}\""
88
- end.join(",\n")
89
-
90
- gsub_file "config/routes.rb", /devise_for :users.*$$/ do
91
- ["devise_for :users, controllers: {", controller_templates, " }"].join("\n")
92
- end
93
- end
94
-
95
- def add_rspec_coverage
96
- directory "spec"
97
- end
98
-
99
- def update_application_url_concerns
100
- change_application_url("url_for_authentication", "new_user_session_path")
101
- end
102
-
103
- def add_testing_variables
104
- append_file ".env.development", "DEVISE_MAILER_SENDER=devise-mailer@localhost\n"
105
- append_file ".env.test", "DEVISE_MAILER_SENDER=devise-mailer@example.com\n"
106
- end
107
-
108
- private
109
-
110
- def rails5_and_up?
111
- Rails::VERSION::MAJOR >= 5
112
- end
113
-
114
- def migration_version
115
- "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]" if rails5_and_up?
116
- end
117
-
118
- def generate_devise_install(dir)
119
- initializer = build_devise_install_generator(dir)
120
- initializer.invoke_all
121
-
122
- update_initializer(dir)
123
- make_devise_paranoid(dir)
124
- send_email_on_email_change(dir)
125
- send_email_on_password_change(dir)
126
- add_translations(dir)
127
- end
128
-
129
- def build_devise_install_generator(dir)
130
- require "generators/devise/install_generator"
131
-
132
- initializer = ::Devise::Generators::InstallGenerator.new(
133
- report_stream: StringIO.new
134
- )
135
- initializer.destination_root = dir
136
- initializer
137
- end
138
-
139
- def update_initializer(dir)
140
- gsub_file devise_initializer(dir),
141
- /config\.mailer_sender = ['"][^'"]+['']/,
142
- 'config.mailer_sender = ENV.fetch("DEVISE_MAILER_SENDER",' \
143
- " Rails.application.credentials.devise_mailer_sender)"
144
- gsub_file devise_initializer(dir),
145
- /config\.secret_key = ['"][^'"]+['']/,
146
- 'config.secret_key = ENV.fetch("DEVISE_SECRET_KEY")'
147
- gsub_file devise_initializer(dir),
148
- /config\.pepper = ['"][^'"]+['']/,
149
- 'config.pepper = ENV.fetch("DEVISE_PEPPER")'
150
- end
151
-
152
- def make_devise_paranoid(dir)
153
- gsub_file devise_initializer(dir),
154
- /config\.paranoid = (true|false)/,
155
- "config.paranoid = true"
156
- uncomment_lines devise_initializer(dir), /config\.paranoid = true/
157
- end
158
-
159
- def send_email_on_email_change(dir)
160
- gsub_file devise_initializer(dir),
161
- /config\.send_email_changed_notification = (true|false)/,
162
- "config.send_email_changed_notification = true"
163
- uncomment_lines devise_initializer(dir), /config\.send_email_changed_notification = true/
164
- end
165
-
166
- def send_email_on_password_change(dir)
167
- gsub_file devise_initializer(dir),
168
- /config\.send_password_change_notification = (true|false)/,
169
- "config.send_password_change_notification = true"
170
- uncomment_lines devise_initializer(dir), /config\.send_password_change_notification = true/
171
- end
172
-
173
- def add_translations(dir)
174
- inject_into_file File.join(dir, "config/locales/devise.en.yml"), after: /failure:$/ do
175
- "\n deleted_account: " \
176
- "\"You've deleted your account. Please contact support if you want to recover it!\""
177
- end
178
- end
179
-
180
- def devise_initializer(dir)
181
- File.join(dir, "config", "initializers", "devise.rb")
182
- end
183
-
184
- def generate_devise_controllers(dir)
185
- require "generators/devise/controllers_generator"
186
-
187
- initializer = build_devise_controllers_generator(dir)
188
- initializer.scope = "users"
189
- initializer.invoke_all
190
-
191
- devise_controllers.each do |controller|
192
- add_layout_to_controller(dir, controller)
193
- end
194
- end
195
-
196
- def build_devise_controllers_generator(dir)
197
- initializer = ::Devise::Generators::ControllersGenerator.new(
198
- report_stream: StringIO.new
199
- )
200
- initializer.destination_root = dir
201
- initializer.source_paths.insert(1, File.join(self.class.source_root, "controllers"))
202
- initializer
203
- end
204
-
205
- def add_layout_to_controller(dir, controller)
206
- inject_into_file File.join(dir, controller_path(controller)), after: /< Devise::.*$/ do
207
- "\n layout \"#{options[:devise_layout]}\"\n"
208
- end
209
-
210
- # Replace Generic resource routes with users
211
- gsub_file File.join(dir, controller_path(controller)), "/resource", "/users"
212
- end
213
-
214
- def add_pundit_support(dir)
215
- use_pundit_for_update_user_details(dir)
216
- add_pudit_authorize_current_user_method(dir)
217
- add_pudit_authorize_current_user_callback(dir)
218
- add_pudit_error_handling_concern(dir)
219
- end
220
-
221
- def use_pundit_for_update_user_details(dir)
222
- gsub_file File.join(dir, controller_path("registrations")),
223
- /\.permit\(:account_update.*\)/,
224
- ".permit(:account_update, keys: policy(current_user).permitted_attributes_for_update)"
225
- end
226
-
227
- def add_pudit_authorize_current_user_method(dir)
228
- inject_into_file File.join(dir, controller_path("registrations")), after: "protected\n" do
229
- "\n" + <<~'METHOD'.gsub(/([^\n]*)\n/, " \\1\n")
230
- # Ensure the logged in user is able to update or destroy their account
231
- def authorize_current_user
232
- authorize current_user
233
- end
234
- METHOD
235
- end
236
- end
237
-
238
- def add_pudit_authorize_current_user_callback(dir)
239
- inject_into_file File.join(dir, controller_path("registrations")),
240
- after: /before_action :configure_account_update_params.*$/ do
241
- "\n before_action :authorize_current_user, only: %i[edit update destroy]"
242
- end
243
- end
244
-
245
- def add_pudit_error_handling_concern(dir)
246
- inject_into_file File.join(dir, controller_path("registrations")), after: /< Devise::.*$/ do
247
- "\n include PunditErrorHandling\n"
248
- end
249
- end
250
-
251
- def controller_path(controller)
252
- File.join("app", "controllers", "users", "#{controller}_controller.rb")
253
- end
254
-
255
- def devise_controllers
256
- %w[sessions passwords registrations]
257
- end
258
- end
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Rockstart::DockerGenerator < Rails::Generators::Base
4
- include Rails::Generators::AppName
5
-
6
- source_root File.expand_path("templates", __dir__)
7
-
8
- desc "This generator configures a Rails Application to work with Docker"
9
-
10
- class_option :root_image, type: :string,
11
- desc: "Docker image to build the container from",
12
- default: "ruby:#{RUBY_VERSION}"
13
-
14
- class_option :app_home, type: :string,
15
- desc: "Mount directory used within Docker image",
16
- default: Rails.application.engine_name
17
-
18
- class_option :assets, type: :boolean,
19
- desc: "Include frontend assets support (node|yarn)",
20
- default: true
21
-
22
- class_option :devise, type: :boolean,
23
- desc: "Include Devise support",
24
- default: true
25
-
26
- class_option :postgres, type: :boolean,
27
- desc: "Include Postgres support",
28
- default: Rockstart::Env.postgres_db?
29
-
30
- def create_dockerignore
31
- copy_file "dockerignore", ".dockerignore"
32
- end
33
-
34
- def create_dockerfile
35
- @root_image = options[:root_image]
36
- @app_home = options[:app_home]
37
- @postgres = options[:postgres]
38
- @assets = options[:assets]
39
- template "app/Dockerfile-app", "Dockerfile"
40
- end
41
-
42
- def create_nginx_image
43
- @root_image = options[:root_image]
44
- @app_home = options[:app_home]
45
- template "web/Dockerfile-web", "docker/web/Dockerfile"
46
- template "web/nginx.conf", "docker/web/nginx.conf"
47
- end
48
-
49
- def add_docker_compose
50
- @app_home = options[:app_home]
51
- template "docker-compose.yml", "docker-compose.yml"
52
- template "docker-compose.test.yml", "docker-compose.test.yml"
53
- end
54
-
55
- def create_certs_directory
56
- FileUtils.mkdir_p(Rails.root.join("docker", "certs", "web"))
57
- append_file ".gitignore", "\n# Docker Configuration\ndocker/certs\n"
58
- end
59
-
60
- def create_dotenv
61
- template "dotenv.docker.tt", ".env.docker"
62
- end
63
-
64
- def create_localhost_certificates
65
- template "localhost_domains.ext.tt", "docker/certs/web/#{app_name}_localhost.ext"
66
- template "setup-localhost.tt", "bin/setup-localhost"
67
- File.chmod(0o755, Rails.root.join("bin", "setup-localhost"))
68
- append_file ".gitignore", "\n# localhost certificate authority\nlocalhostCA.*\n"
69
- end
70
-
71
- private
72
-
73
- def devise?
74
- options[:devise]
75
- end
76
-
77
- def postgres?
78
- options[:postgres]
79
- end
80
-
81
- # Generates an example password
82
- def example_db_password
83
- require "base64"
84
- Base64.urlsafe_encode64(Rails.application.engine_name)
85
- end
86
- end
@@ -1,47 +0,0 @@
1
- version: '2.0'
2
- services:
3
- app:
4
- build: .
5
- environment:
6
- <%- if postgres? -%>
7
- - DATABASE_URL=postgres://<%= app_name %>:<%= example_db_password %>@db/<%= app_name %>_production
8
- <%- end -%>
9
- - SMTP_SERVER=mailcatcher
10
- - SMTP_PORT=1025
11
- env_file:
12
- - ./.env.docker
13
- <%- if postgres? -%>
14
- depends_on:
15
- - db
16
- <%- end -%>
17
- volumes:
18
- - static-assets:/<%= @app_home %>/public
19
- <%- if postgres? -%>
20
- db:
21
- image: postgres
22
- environment:
23
- - POSTGRES_DB=<%= app_name %>_production
24
- - POSTGRES_USER=<%= app_name %>
25
- - POSTGRES_PASSWORD=<%= example_db_password %>
26
- volumes:
27
- - ./tmp/db:/var/lib/postgresql/data
28
- <%- end -%>
29
- mailcatcher:
30
- image: sj26/mailcatcher
31
- ports:
32
- - 1080:1080
33
- web:
34
- build:
35
- context: ./docker/web/
36
- depends_on:
37
- - app
38
- ports:
39
- - 80:80
40
- - 443:443
41
- volumes:
42
- - ./docker/certs/web:/<%= @app_home %>/certs
43
- - static-assets:/<%= @app_home %>/public
44
- - web-logs:/<%= @app_home %>/log
45
- volumes:
46
- static-assets: {}
47
- web-logs: {}
@@ -1,4 +0,0 @@
1
- APP_HOST=localhost
2
- <%- if devise? -%>
3
- DEVISE_MAILER_SENDER=devise-mailer@<%= app_name %>
4
- <%- end -%>
@@ -1,8 +0,0 @@
1
- Description:
2
- Installs common helpers for Frontend UIs
3
-
4
- Example:
5
- rails generate rockstart:frontend_helpers
6
-
7
- This will create:
8
- Install the titles gem
@@ -1,65 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Rockstart::FrontendHelpersGenerator < Rails::Generators::Base
4
- source_root File.expand_path("templates", __dir__)
5
-
6
- class_option :force_url_helpers, type: :boolean,
7
- desc: "Force creation of blank Application URL Helpers",
8
- default: false
9
-
10
- def install_simple_form
11
- gem "simple_form"
12
-
13
- Bundler.with_clean_env do
14
- run "bundle install --quiet"
15
-
16
- generate "simple_form:install"
17
- end
18
- end
19
-
20
- def install_titles
21
- gem "title", github: "calebthompson/title"
22
-
23
- template "titles.en.yml.tt", "config/locales/titles.en.yml"
24
-
25
- gsub_file "app/views/layouts/application.html.erb", %r{\<title(.+)\</title},
26
- "<title><%= title %></title"
27
- end
28
-
29
- def add_application_urls_concern
30
- if force_url_helpers? || !File.exist?(Rails.root.join(application_urls_concern_path))
31
- copy_file "application_urls.rb", application_urls_concern_path
32
- else
33
- say "Skipping #{application_urls_concern_path}"
34
- end
35
- inject_into_file "app/controllers/application_controller.rb",
36
- " include ApplicationUrls\n",
37
- before: /^end$/
38
- end
39
-
40
- def add_application_urls_helper
41
- if force_url_helpers? || !File.exist?(Rails.root.join(application_urls_helper_path))
42
- copy_file "application_urls_helper.rb", application_urls_helper_path
43
- else
44
- say "Skipping #{application_urls_helper_path}"
45
- end
46
- end
47
-
48
- private
49
-
50
- def default_title
51
- Rails.application.class.to_s.split("::").first
52
- end
53
-
54
- def force_url_helpers?
55
- options.fetch(:force_url_helpers)
56
- end
57
-
58
- def application_urls_concern_path
59
- File.join("app", "controllers", "concerns", "application_urls.rb")
60
- end
61
-
62
- def application_urls_helper_path
63
- File.join("spec", "support", "application_urls_helper.rb")
64
- end
65
- end