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
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rails
4
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
5
+ class <%= app_const_base %>ResourceRouteGenerator < Rails::Generators::NamedBase # :nodoc:
6
+ # Properly nests namespaces passed into a generator
7
+ #
8
+ # $ bin/rails generate resource admin/users/products
9
+ #
10
+ # should give you
11
+ #
12
+ # namespace :admin do
13
+ # namespace :users do
14
+ # resources :products, concerns: :paginatable
15
+ # end
16
+ # end
17
+ def add_resource_route
18
+ return if options[:actions].present?
19
+
20
+ depth = 0
21
+ lines = []
22
+
23
+ # Create 'namespace' ladder
24
+ # namespace :foo do
25
+ # namespace :bar do
26
+ regular_class_path.each do |ns|
27
+ lines << indent("namespace :#{ns} do\n", depth * 2)
28
+ depth += 1
29
+ end
30
+
31
+ # inserts the primary resource with pagination routes
32
+ lines << indent("resources :#{file_name.pluralize}, concerns: :paginatable\n", depth * 2)
33
+
34
+ # Create `end` ladder
35
+ # end
36
+ # end
37
+ until depth.zero?
38
+ depth -= 1
39
+ lines << indent("end\n", depth * 2)
40
+ end
41
+
42
+ route lines.join
43
+ end
44
+
45
+ def add_paginatable_concern
46
+ route <<~PAGINATABLE
47
+ concern :paginatable do
48
+ get "page/:page", action: :index, on: :collection, as: ""
49
+ end
50
+ PAGINATABLE
51
+ end
52
+ end
53
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
54
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Adds scripts for generating SSL Certificates for localhost development
3
+
4
+ Example:
5
+ rails generate rockstart:development:localhost_setup
6
+
7
+ This will create:
8
+ bin/setup-localhost which will generate SSL certificates for localhost
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/template_helpers"
4
+
5
+ module Rockstart::Development
6
+ class LocalhostSetupGenerator < Rails::Generators::Base
7
+ include Rails::Generators::AppName
8
+ include Rockstart::Generators::TemplateHelpers
9
+
10
+ source_root File.expand_path("templates", __dir__)
11
+
12
+ def add_certificate_configuration
13
+ template "localhost_domains.ext.tt", "#{app_name}_localhost.ext"
14
+ end
15
+
16
+ def add_setup_localhost_script
17
+ script_template "setup-localhost"
18
+ end
19
+
20
+ def create_localhost_certificates
21
+ append_file ".gitignore" do
22
+ <<~GITIGNORE
23
+
24
+ # localhost certificate authority
25
+ localhostCA.*
26
+
27
+ # Generated SSL Certificates
28
+ certs/
29
+
30
+ GITIGNORE
31
+ end
32
+ end
33
+ end
34
+ end
@@ -16,12 +16,12 @@ openssl x509 -outform pem -in localhostCA.pem -out localhostCA.crt
16
16
  echo "=== Generating Domain Name Certificate ==="
17
17
 
18
18
  openssl req -new -nodes -newkey rsa:2048 \
19
- -keyout docker/certs/web/<%= app_name %>.key \
20
- -out docker/certs/web/<%= app_name %>.csr \
19
+ -keyout certs/localhost/<%= app_name %>.key \
20
+ -out certs/localhost/<%= app_name %>.csr \
21
21
  -subj "/C=US/ST=YourState/L=YourCity/O=Example-Certificates/CN=<%= app_name %>.local"
22
22
 
23
23
  openssl x509 -req -sha256 -days 1024 \
24
- -in docker/certs/web/<%= app_name %>.csr \
24
+ -in certs/localhost/<%= app_name %>.csr \
25
25
  -CA localhostCA.pem -CAkey localhostCA.key \
26
- -CAcreateserial -extfile docker/certs/<%= app_name %>_localhost.ext \
27
- -out docker/certs/web/<%= app_name %>.crt
26
+ -CAcreateserial -extfile <%= app_name %>_localhost.ext \
27
+ -out certs/localhost/<%= app_name %>.crt
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Generates a README for your new Application
3
+
4
+ Example:
5
+ rails generate rockstart:development:readme
6
+
7
+ This will create:
8
+ A README.md with all configuration instructions included.
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/class_option_helpers"
4
+
5
+ module Rockstart::Development
6
+ class ReadmeGenerator < Rails::Generators::Base
7
+ include Rails::Generators::AppName
8
+ include Rockstart::Generators::ClassOptionHelpers
9
+
10
+ source_root File.expand_path("templates", __dir__)
11
+
12
+ auth0_class_option
13
+
14
+ def copy_readme
15
+ template "README.md"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,74 @@
1
+ # <%= camelized %>
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ ## Configuration
13
+
14
+ <% if auth0? -%>
15
+ ### Auth0 User Roles
16
+
17
+ In order to configure User Roles, you need to add a custom [Rule](https://auth0.com/docs/rules) into Auth0 to include the User's current permissions when generating a User.
18
+
19
+ Access the Admin panel for your Auth0 setup (in Heroku run: `heroku addons:open auth0`), and create a Rule with the following code:
20
+
21
+ ```javascript
22
+ function (user, context, callback) {
23
+ var namespace = 'http://<%= app_name %>/';
24
+ var roles = (user.app_metadata && user.app_metadata.roles) || [];
25
+ context.idToken[namespace + 'roles'] = roles;
26
+ context.accessToken[namespace + 'roles'] = roles;
27
+ return callback(null, user, context);
28
+ }
29
+ ```
30
+
31
+ Find a profile you wish to make an admin, and `"admin"` to a roles array inside of `app_metadata`. For example:
32
+
33
+ ```javascript
34
+ {
35
+ "roles": [
36
+ "admin"
37
+ ]
38
+ }
39
+ ```
40
+
41
+ You should now be able to sign in, with that profile, with Admin access.
42
+
43
+ <% end -%>
44
+ * Database creation
45
+
46
+ * Database initialization
47
+
48
+ * How to run the test suite
49
+
50
+ * Services (job queues, cache servers, search engines, etc.)
51
+
52
+ ## Deployment Instructions
53
+
54
+ ### Heroku
55
+
56
+ <%= camelized %> has been pre-configured to deploy to Heroku; either as a Review app, or directly for Production.
57
+
58
+ For Production applications, you should already have a git remote with the name `heroku` configured for this application. If this is not found, it will be assumed the app is a review application, and a new deployment will be generated.
59
+
60
+ Deploy both Review and Production applications by running:
61
+
62
+ ```
63
+ bin/deploy-heroku
64
+ ```
65
+
66
+ With each deployments, Heroku will automatically run `bin/hooks-release`. Newly provisioned review apps will run `bin/hooks-postdeploy`; which will setup the database, and verify the initial installation was successful.
67
+
68
+ For new installs; all required addons will be automatically provisioned. You will have to manually add any required addons for any existing applications, as specified within the `app.json` file.
69
+
70
+ <% if auth0? -%>
71
+ While every attempt has been made to automate provisioning of apps, you will need to manually configure the User Rule and User Roles within Auth0. Not doing so will disable all Admin functionality.
72
+
73
+ <% end -%>
74
+ * ...
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Builds a quick rockstart rebuild script based off your configuration
3
+
4
+ Example:
5
+ rails generate rockstart:development:rebuild
6
+
7
+ This will create:
8
+ A script at bin/rockstart which will re-run the last invokation of rockstart
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/class_option_helpers"
4
+ require "rockstart/generators/content_security_options"
5
+ require "rockstart/generators/template_helpers"
6
+
7
+ module Rockstart::Development
8
+ class RebuildGenerator < Rails::Generators::Base
9
+ include Rockstart::Generators::ClassOptionHelpers
10
+ include Rockstart::Generators::ContentSecurityOptions
11
+ include Rockstart::Generators::TemplateHelpers
12
+
13
+ source_root File.expand_path("templates", __dir__)
14
+
15
+ all_class_options
16
+
17
+ def add_rocstart_script
18
+ script_template "rockstart"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "fileutils"
5
+
6
+ # rockstart rebuild-script script generated by rockstart
7
+
8
+ # path to your application root.
9
+ APP_ROOT = File.expand_path("..", __dir__)
10
+
11
+ def system!(*args)
12
+ system(*args) || abort("\n== Command #{args} failed ==")
13
+ end
14
+
15
+ FileUtils.chdir APP_ROOT do
16
+ puts "== Regenerating previous rockstart build =="
17
+ system! "bundle exec rails generate rockstart" \
18
+ <%-
19
+ class_options = all_class_options
20
+ flags = content_security_flags
21
+ -%>
22
+ <%- class_options.each_with_index do |class_option, index| -%>
23
+ " <%= class_option %>"<%- if (index + 1) < class_options.size || flags.any? %> \<%- end %>
24
+ <%- end -%>
25
+ <%- content_security_flags.each_with_index do |(flag, values), index| -%>
26
+ " <%= flag %> <%= values.join(" ") %>"<%- if (index + 1) < flags.size %> \<%- end %>
27
+ <%- end -%>
28
+ end
@@ -2,7 +2,7 @@ Description:
2
2
  Overrides the default rails scaffold templates with pre-configured defaults
3
3
 
4
4
  Example:
5
- rails generate rockstart:scaffold_templates
5
+ rails generate rockstart:development:scaffolds
6
6
 
7
7
  This will create:
8
8
  Overrides rails scaffold_controller generator templates
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/class_option_helpers"
4
+
5
+ module Rockstart::Development
6
+ class ScaffoldsGenerator < Rails::Generators::Base
7
+ include Rockstart::Generators::ClassOptionHelpers
8
+
9
+ source_root File.expand_path("templates", __dir__)
10
+
11
+ auth0_class_option
12
+ pundit_class_option
13
+
14
+ def copy_scaffold_templates
15
+ template "api_controller.rb.tt", "#{scaffold_controller_dir}/api_controller.rb.tt"
16
+ template "controller.rb.tt", "#{scaffold_controller_dir}/controller.rb.tt"
17
+ end
18
+
19
+ def copy_model_template
20
+ copy_file "model.rb.tt", "lib/templates/active_record/model/model.rb.tt"
21
+ copy_file "factory_bot/factories.erb", "lib/templates/factory_bot/model/factories.erb"
22
+ end
23
+
24
+ def copy_rspec_model_templates
25
+ copy_file "rspec/model_spec.rb.tt",
26
+ "#{rspec_templates_dir}/model/model_spec.rb"
27
+ end
28
+
29
+ def copy_rspec_scaffold_templates
30
+ template "rspec/api_request_spec.rb.tt",
31
+ "#{rspec_templates_dir}/scaffold/api_request_spec.rb"
32
+ template "rspec/request_spec.rb.tt",
33
+ "#{rspec_templates_dir}/scaffold/request_spec.rb"
34
+ end
35
+
36
+ private
37
+
38
+ def scaffold_controller_dir
39
+ @scaffold_controller_dir ||= "lib/templates/rails/scaffold_controller"
40
+ end
41
+
42
+ def rspec_templates_dir
43
+ @rspec_templates_dir ||= "lib/templates/rspec"
44
+ end
45
+ end
46
+ end
@@ -4,9 +4,12 @@ require_dependency "<%%= namespaced_path %>/application_controller"
4
4
  <%% end -%>
5
5
  <%% module_namespacing do -%>
6
6
  class <%%= controller_class_name %>Controller < ApplicationController
7
- <%- if devise? -%>
7
+ <%%-
8
+ # Generate scaffold with name or title, and a `slug:uniq` field to enable friendly_id
9
+ using_friendly_id = attributes_names.any? { |name| %w(name title).include?(name) } &&
10
+ attributes_names.any? { |name| %w(slug).include?(name) }
11
+ -%>
8
12
  before_action :authenticate_user!
9
- <%- end -%>
10
13
  before_action :assign_<%%= singular_table_name %>, only: [:show, :update, :destroy]
11
14
  <%- if pundit? -%>
12
15
  after_action :verify_authorized
@@ -73,11 +76,16 @@ class <%%= controller_class_name %>Controller < ApplicationController
73
76
  private
74
77
  # Use callbacks to share common setup or constraints between actions.
75
78
  def assign_<%%= singular_table_name %>
76
- <%- if pundit? -%>
77
- @<%%= singular_table_name %> = <%%= orm_class.find("policy_scope(#{class_name})", "params[:id]") %>
78
- <%- else -%>
79
- @<%%= singular_table_name %> = <%%= orm_class.find(class_name, "params[:id]") %>
80
- <%- end -%>
79
+ <%%-
80
+ <%- if pundit? -%>
81
+ finder_class = "policy_scope(#{class_name})"
82
+ <%- else -%>
83
+ finder_class = class_name
84
+ <%- end -%>
85
+ # Use friendly_id for slug lookup
86
+ finder_class += ".friendly" if using_friendly_id
87
+ -%>
88
+ @<%%= singular_table_name %> = <%%= orm_class.find(finder_class, "params[:id]") %>
81
89
  end
82
90
 
83
91
  # Only allow a trusted parameter "white list" through.
@@ -4,13 +4,16 @@ require_dependency "<%%= namespaced_path %>/application_controller"
4
4
  <%% end -%>
5
5
  <%% module_namespacing do -%>
6
6
  class <%%= controller_class_name %>Controller < ApplicationController
7
+ <%%-
8
+ # Generate scaffold with name or title, and a `slug:uniq` field to enable friendly_id
9
+ using_friendly_id = attributes_names.any? { |name| %w(name title).include?(name) } &&
10
+ attributes_names.any? { |name| %w(slug).include?(name) }
11
+ -%>
7
12
  <%- if pundit? -%>
8
13
  include PunditErrorHandling
9
14
 
10
15
  <%- end -%>
11
- <%- if devise? -%>
12
16
  before_action :authenticate_user!
13
- <%- end -%>
14
17
  before_action :assign_<%%= singular_table_name %>, only: [:show, :edit, :update, :destroy]
15
18
  <%- if pundit? -%>
16
19
  after_action :verify_authorized
@@ -18,12 +21,13 @@ class <%%= controller_class_name %>Controller < ApplicationController
18
21
  <%- end -%>
19
22
 
20
23
  # GET <%%= route_url %>
24
+ # GET <%%= route_url %>/page/1
21
25
  def index
22
26
  <%- if pundit? -%>
23
27
  authorize <%%= class_name %>
24
- @<%%= plural_table_name %> = policy_scope(<%%= class_name %>)
28
+ @<%%= plural_table_name %> = policy_scope(<%%= class_name %>).page params[:page]
25
29
  <%- else -%>
26
- @<%%= plural_table_name %> = <%%= orm_class.all(class_name) %>
30
+ @<%%= plural_table_name %> = <%%= orm_class.all(class_name) %>.page params[:page]
27
31
  <%- end -%>
28
32
  end
29
33
 
@@ -103,11 +107,16 @@ class <%%= controller_class_name %>Controller < ApplicationController
103
107
  private
104
108
  # Use callbacks to share common setup or constraints between actions.
105
109
  def assign_<%%= singular_table_name %>
106
- <%- if pundit? -%>
107
- @<%%= singular_table_name %> = <%%= orm_class.find("policy_scope(#{class_name})", "params[:id]") %>
108
- <%- else -%>
109
- @<%%= singular_table_name %> = <%%= orm_class.find(class_name, "params[:id]") %>
110
- <%- end -%>
110
+ <%%-
111
+ <%- if pundit? -%>
112
+ finder_class = "policy_scope(#{class_name})"
113
+ <%- else -%>
114
+ finder_class = class_name
115
+ <%- end -%>
116
+ # Use friendly_id for slug lookup
117
+ finder_class += ".friendly" if using_friendly_id
118
+ -%>
119
+ @<%%= singular_table_name %> = <%%= orm_class.find(finder_class, "params[:id]") %>
111
120
  end
112
121
 
113
122
  # Only allow a trusted parameter "white list" through.
@@ -0,0 +1,8 @@
1
+ <%-
2
+ filtered_factory_definition = factory_definition.rstrip
3
+ .gsub(/\"MyString\"/, "Faker::Lorem.sentence") # Randomly generate strings
4
+ .sub(/slug[^\}]+}$/, "# slug:friendly_id") # ignore friendly_id slug
5
+ -%>
6
+ FactoryBot.define do
7
+ <%= filtered_factory_definition %>
8
+ end