rockstart 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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