rockstart 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -0
  3. data/lib/generators/rockstart/authorization/USAGE +9 -0
  4. data/lib/generators/rockstart/authorization/auth0/USAGE +10 -0
  5. data/lib/generators/rockstart/authorization/auth0/auth0_generator.rb +49 -0
  6. data/lib/generators/rockstart/authorization/auth0/templates/app/controllers/auth_controller.rb.tt +47 -0
  7. data/lib/generators/rockstart/authorization/auth0/templates/app/controllers/concerns/session_auth.rb +23 -0
  8. data/lib/generators/rockstart/authorization/auth0/templates/app/models/user.rb.tt +82 -0
  9. data/lib/generators/rockstart/authorization/auth0/templates/app/views/auth/new.html.erb +3 -0
  10. data/lib/generators/rockstart/authorization/auth0/templates/app/views/auth/sign_out.html.erb +1 -0
  11. data/lib/generators/rockstart/authorization/auth0/templates/auth0.en.yml +5 -0
  12. data/lib/generators/rockstart/authorization/auth0/templates/auth0_initializer.rb +27 -0
  13. data/lib/generators/rockstart/authorization/auth0/templates/auth0_util.rb.tt +38 -0
  14. data/lib/generators/rockstart/authorization/auth0/templates/auth0_util_spec.rb +21 -0
  15. data/lib/generators/rockstart/authorization/auth0/templates/spec/factories/users.rb.tt +32 -0
  16. data/lib/generators/rockstart/authorization/auth0/templates/spec/models/user_spec.rb.tt +91 -0
  17. data/lib/generators/rockstart/authorization/auth0/templates/spec/requests/auth_spec.rb +94 -0
  18. data/lib/generators/rockstart/authorization/auth0/templates/spec/support/auth_request_helper.rb +27 -0
  19. data/lib/generators/rockstart/authorization/authorization_generator.rb +29 -0
  20. data/lib/generators/rockstart/{devise → authorization/devise}/USAGE +3 -1
  21. data/lib/generators/rockstart/authorization/devise/devise_generator.rb +208 -0
  22. data/lib/generators/rockstart/authorization/devise/templates/add_devise_to_users_migration.rb.tt +50 -0
  23. data/lib/generators/rockstart/{devise → authorization/devise}/templates/controllers/passwords_controller.rb +0 -0
  24. data/lib/generators/rockstart/{devise → authorization/devise}/templates/controllers/registrations_controller.rb +0 -0
  25. data/lib/generators/rockstart/{devise → authorization/devise}/templates/controllers/sessions_controller.rb +0 -0
  26. data/lib/generators/rockstart/{devise → authorization/devise}/templates/create_user_migration.rb.tt +0 -0
  27. data/lib/generators/rockstart/{devise → authorization/devise}/templates/models/user.rb +14 -2
  28. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/factories/users.rb +0 -0
  29. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/models/user_spec.rb +9 -21
  30. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/requests/users/passwords_spec.rb +0 -0
  31. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/requests/users/registrations_spec.rb +2 -11
  32. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/requests/users/sessions_spec.rb +1 -38
  33. data/lib/generators/rockstart/{devise → authorization/devise}/templates/spec/support/devise_request_spec_helper.rb +0 -0
  34. data/lib/generators/rockstart/{devise → authorization/devise}/templates/translations.en.yml +0 -0
  35. data/lib/generators/rockstart/{pundit → authorization/pundit}/USAGE +1 -1
  36. data/lib/generators/rockstart/authorization/pundit/pundit_generator.rb +41 -0
  37. data/lib/generators/rockstart/{pundit → authorization/pundit}/templates/app/controllers/concerns/pundit_error_handling.rb +0 -0
  38. data/lib/generators/rockstart/{pundit → authorization/pundit}/templates/app/policies/application_policy.rb +0 -0
  39. data/lib/generators/rockstart/{pundit/templates/app/policies/user_policy.rb → authorization/pundit/templates/app/policies/user_policy.rb.tt} +4 -0
  40. data/lib/generators/rockstart/{pundit → authorization/pundit}/templates/config/locales/pundit.en.yml +0 -0
  41. data/lib/generators/rockstart/authorization/pundit/templates/lib/admin_constraint.rb +11 -0
  42. data/lib/generators/rockstart/{pundit/templates/lib/templates/pundit/policy/policy.rb → authorization/pundit/templates/scaffold/policy.rb.tt} +0 -0
  43. data/lib/generators/rockstart/{pundit/templates/lib/templates/rspec/policy/policy_spec.rb → authorization/pundit/templates/scaffold/policy_spec.rb.tt} +0 -0
  44. data/lib/generators/rockstart/{pundit/templates/spec/policies/user_policy_spec.rb → authorization/pundit/templates/spec/policies/user_policy_spec.rb.tt} +43 -5
  45. data/lib/generators/rockstart/{pundit → authorization/pundit}/templates/spec/support/pundit_matchers.rb +0 -0
  46. data/lib/generators/rockstart/deployment/USAGE +8 -0
  47. data/lib/generators/rockstart/deployment/deployment_generator.rb +78 -0
  48. data/lib/generators/rockstart/{docker → deployment/docker}/USAGE +0 -0
  49. data/lib/generators/rockstart/deployment/docker/docker_generator.rb +70 -0
  50. data/lib/generators/rockstart/{docker → deployment/docker}/templates/app/Dockerfile-app +6 -5
  51. data/lib/generators/rockstart/{docker → deployment/docker}/templates/docker-compose.test.yml +5 -2
  52. data/lib/generators/rockstart/deployment/docker/templates/docker-compose.yml +74 -0
  53. data/lib/generators/rockstart/{docker → deployment/docker}/templates/dockerignore +0 -0
  54. data/lib/generators/rockstart/deployment/docker/templates/dotenv.docker-db.tt +3 -0
  55. data/lib/generators/rockstart/deployment/docker/templates/dotenv.docker.tt +20 -0
  56. data/lib/generators/rockstart/{docker → deployment/docker}/templates/web/Dockerfile-web +0 -0
  57. data/lib/generators/rockstart/{docker → deployment/docker}/templates/web/nginx.conf +24 -1
  58. data/lib/generators/rockstart/deployment/heroku/USAGE +9 -0
  59. data/lib/generators/rockstart/deployment/heroku/heroku_generator.rb +50 -0
  60. data/lib/generators/rockstart/deployment/heroku/templates/Procfile.tt +5 -0
  61. data/lib/generators/rockstart/deployment/heroku/templates/app.json.tt +50 -0
  62. data/lib/generators/rockstart/deployment/heroku/templates/deploy-heroku.tt +42 -0
  63. data/lib/generators/rockstart/deployment/heroku/templates/heroku.rake.tt +25 -0
  64. data/lib/generators/rockstart/deployment/heroku/templates/slugignore +3 -0
  65. data/lib/generators/rockstart/deployment/nginx/USAGE +8 -0
  66. data/lib/generators/rockstart/deployment/nginx/nginx_generator.rb +20 -0
  67. data/lib/generators/rockstart/deployment/templates/hooks-postdeploy.tt +22 -0
  68. data/lib/generators/rockstart/deployment/templates/hooks-release.tt +17 -0
  69. data/lib/generators/rockstart/deployment/templates/rack_deflater_spec.rb +28 -0
  70. data/lib/generators/rockstart/deployment/templates/web.tt +3 -0
  71. data/lib/generators/rockstart/deployment/templates/worker.tt +3 -0
  72. data/lib/generators/rockstart/development/USAGE +10 -0
  73. data/lib/generators/rockstart/development/audited/USAGE +10 -0
  74. data/lib/generators/rockstart/development/audited/audited_generator.rb +35 -0
  75. data/lib/generators/rockstart/development/audited/templates/audit.rb.tt +35 -0
  76. data/lib/generators/rockstart/development/audited/templates/audit_spec.rb.tt +54 -0
  77. data/lib/generators/rockstart/development/audited/templates/audited_initializer.rb +5 -0
  78. data/lib/generators/rockstart/development/audited/templates/audited_support.rb +3 -0
  79. data/lib/generators/rockstart/development/audited/templates/install_audited.rb.tt +45 -0
  80. data/lib/generators/rockstart/development/development_generator.rb +42 -0
  81. data/lib/generators/rockstart/development/env/USAGE +8 -0
  82. data/lib/generators/rockstart/development/env/env_generator.rb +17 -0
  83. data/lib/generators/rockstart/development/env/templates/dotenv.development.tt +4 -0
  84. data/lib/generators/rockstart/development/friendly_id/USAGE +8 -0
  85. data/lib/generators/rockstart/development/friendly_id/friendly_id_generator.rb +15 -0
  86. data/lib/generators/rockstart/development/friendly_id/templates/friendly_id_initializer.rb +52 -0
  87. data/lib/generators/rockstart/development/generator_overrides/USAGE +8 -0
  88. data/lib/generators/rockstart/development/generator_overrides/generator_overrides_generator.rb +31 -0
  89. data/lib/generators/rockstart/development/generator_overrides/templates/resource_route_generator.rb.tt +54 -0
  90. data/lib/generators/rockstart/development/localhost_setup/USAGE +8 -0
  91. data/lib/generators/rockstart/development/localhost_setup/localhost_setup_generator.rb +34 -0
  92. data/lib/generators/rockstart/{docker → development/localhost_setup}/templates/localhost_domains.ext.tt +0 -0
  93. data/lib/generators/rockstart/{docker → development/localhost_setup}/templates/setup-localhost.tt +5 -5
  94. data/lib/generators/rockstart/development/readme/USAGE +8 -0
  95. data/lib/generators/rockstart/development/readme/readme_generator.rb +18 -0
  96. data/lib/generators/rockstart/development/readme/templates/README.md +74 -0
  97. data/lib/generators/rockstart/development/rebuild/USAGE +8 -0
  98. data/lib/generators/rockstart/development/rebuild/rebuild_generator.rb +21 -0
  99. data/lib/generators/rockstart/development/rebuild/templates/rockstart.tt +28 -0
  100. data/lib/generators/rockstart/{scaffold_templates → development/scaffolds}/USAGE +1 -1
  101. data/lib/generators/rockstart/development/scaffolds/scaffolds_generator.rb +46 -0
  102. data/lib/generators/rockstart/{scaffold_templates → development/scaffolds}/templates/api_controller.rb.tt +15 -7
  103. data/lib/generators/rockstart/{scaffold_templates → development/scaffolds}/templates/controller.rb.tt +18 -9
  104. data/lib/generators/rockstart/development/scaffolds/templates/factory_bot/factories.erb +8 -0
  105. data/lib/generators/rockstart/development/scaffolds/templates/model.rb.tt +61 -0
  106. data/lib/generators/rockstart/development/scaffolds/templates/rspec/api_request_spec.rb.tt +142 -0
  107. data/lib/generators/rockstart/development/scaffolds/templates/rspec/model_spec.rb.tt +35 -0
  108. data/lib/generators/rockstart/development/scaffolds/templates/rspec/request_spec.rb.tt +492 -0
  109. data/lib/generators/rockstart/frontend_app/USAGE +10 -0
  110. data/lib/generators/rockstart/frontend_app/application_urls/USAGE +8 -0
  111. data/lib/generators/rockstart/frontend_app/application_urls/application_urls_generator.rb +28 -0
  112. data/lib/generators/rockstart/{frontend_helpers → frontend_app/application_urls}/templates/application_urls.rb +0 -0
  113. data/lib/generators/rockstart/{frontend_helpers → frontend_app/application_urls}/templates/application_urls_helper.rb +0 -0
  114. data/lib/generators/rockstart/frontend_app/assets/USAGE +8 -0
  115. data/lib/generators/rockstart/frontend_app/assets/assets_generator.rb +11 -0
  116. data/lib/generators/rockstart/frontend_app/assets/templates/assets.rake +22 -0
  117. data/lib/generators/rockstart/frontend_app/frontend_app_generator.rb +38 -0
  118. data/lib/generators/rockstart/frontend_app/simple_form/USAGE +8 -0
  119. data/lib/generators/rockstart/frontend_app/simple_form/simple_form_generator.rb +9 -0
  120. data/lib/generators/rockstart/frontend_app/titles/USAGE +8 -0
  121. data/lib/generators/rockstart/{frontend_helpers → frontend_app/titles}/templates/titles.en.yml.tt +0 -0
  122. data/lib/generators/rockstart/frontend_app/titles/titles_generator.rb +22 -0
  123. data/lib/generators/rockstart/gemset/USAGE +8 -0
  124. data/lib/generators/rockstart/gemset/gemset_generator.rb +129 -0
  125. data/lib/generators/rockstart/mailers/USAGE +8 -0
  126. data/lib/generators/rockstart/mailers/mailers_generator.rb +7 -0
  127. data/lib/generators/rockstart/{smtp_mailer → mailers/smtp_mailer}/USAGE +0 -0
  128. data/lib/generators/rockstart/mailers/smtp_mailer/smtp_mailer_generator.rb +36 -0
  129. data/lib/generators/rockstart/{smtp_mailer/templates/config/initializers/action_mailer.rb → mailers/smtp_mailer/templates/action_mailer_initializer.rb} +0 -0
  130. data/lib/generators/rockstart/monitoring/USAGE +8 -0
  131. data/lib/generators/rockstart/{logging → monitoring/lograge}/USAGE +1 -1
  132. data/lib/generators/rockstart/monitoring/lograge/lograge_generator.rb +19 -0
  133. data/lib/generators/rockstart/monitoring/lograge/templates/lograge_initializer.rb +44 -0
  134. data/lib/generators/rockstart/monitoring/lograge/templates/lograge_util.rb +42 -0
  135. data/lib/generators/rockstart/monitoring/monitoring_generator.rb +35 -0
  136. data/lib/generators/rockstart/monitoring/okcomputer/USAGE +8 -0
  137. data/lib/generators/rockstart/monitoring/okcomputer/okcomputer_generator.rb +28 -0
  138. data/lib/generators/rockstart/monitoring/okcomputer/templates/okcomputer.en.yml +5 -0
  139. data/lib/generators/rockstart/monitoring/okcomputer/templates/okcomputer_initializer.rb.tt +34 -0
  140. data/lib/generators/rockstart/monitoring/okcomputer/templates/okcomputer_spec.rb +62 -0
  141. data/lib/generators/rockstart/monitoring/rollbar/USAGE +8 -0
  142. data/lib/generators/rockstart/monitoring/rollbar/rollbar_generator.rb +20 -0
  143. data/lib/generators/rockstart/monitoring/rollbar/templates/rollbar_initializer.rb.tt +80 -0
  144. data/lib/generators/rockstart/monitoring/sidekiq_ui/USAGE +8 -0
  145. data/lib/generators/rockstart/monitoring/sidekiq_ui/sidekiq_ui_generator.rb +38 -0
  146. data/lib/generators/rockstart/monitoring/sidekiq_ui/templates/sidekiq_spec.rb +32 -0
  147. data/lib/generators/rockstart/quality/quality_generator.rb +5 -16
  148. data/lib/generators/rockstart/quality/rubocop/USAGE +11 -0
  149. data/lib/generators/rockstart/quality/rubocop/rubocop_generator.rb +23 -0
  150. data/lib/generators/rockstart/quality/rubocop/templates/rubocop.rake +19 -0
  151. data/lib/generators/rockstart/quality/{templates → rubocop/templates}/rubocop.yml +0 -0
  152. data/lib/generators/rockstart/rockstart_generator.rb +13 -65
  153. data/lib/generators/rockstart/run/USAGE +17 -0
  154. data/lib/generators/rockstart/run/run_generator.rb +73 -0
  155. data/lib/generators/rockstart/security/brakeman/USAGE +9 -0
  156. data/lib/generators/rockstart/security/brakeman/brakeman_generator.rb +15 -0
  157. data/lib/generators/rockstart/security/{templates → brakeman/templates}/brakeman.rake +1 -1
  158. data/lib/generators/rockstart/security/bundler_audit/USAGE +8 -0
  159. data/lib/generators/rockstart/security/bundler_audit/bundler_audit_generator.rb +11 -0
  160. data/lib/generators/rockstart/security/bundler_audit/templates/bundler_audit.rake +14 -0
  161. data/lib/generators/rockstart/security/content_security/USAGE +8 -0
  162. data/lib/generators/rockstart/security/content_security/content_security_generator.rb +41 -0
  163. data/lib/generators/rockstart/security/{templates → content_security/templates}/content_security_policy_initializer.rb.tt +2 -2
  164. data/lib/generators/rockstart/security/{templates → content_security/templates}/content_security_spec.rb.tt +12 -13
  165. data/lib/generators/rockstart/security/{templates/csp_violations_controller.rb → content_security/templates/csp_violations_controller.rb.tt} +14 -6
  166. data/lib/generators/rockstart/security/{templates → content_security/templates}/session_store_initializer.rb.tt +1 -2
  167. data/lib/generators/rockstart/security/rack_attack/USAGE +8 -0
  168. data/lib/generators/rockstart/security/rack_attack/rack_attack_generator.rb +37 -0
  169. data/lib/generators/rockstart/security/{templates → rack_attack/templates}/cache_support.rb +1 -1
  170. data/lib/generators/rockstart/security/{templates/rack_attack.rb → rack_attack/templates/rack_attack_initializer.rb.tt} +34 -1
  171. data/lib/generators/rockstart/security/rack_attack/templates/rack_attack_spec.rb.tt +116 -0
  172. data/lib/generators/rockstart/security/security_generator.rb +20 -84
  173. data/lib/generators/rockstart/storage/USAGE +8 -0
  174. data/lib/generators/rockstart/storage/active_storage/USAGE +8 -0
  175. data/lib/generators/rockstart/storage/active_storage/active_storage_generator.rb +59 -0
  176. data/lib/generators/rockstart/storage/active_storage/templates/active_storage_initializer.rb +9 -0
  177. data/lib/generators/rockstart/storage/active_storage/templates/better_s3_service.rb +27 -0
  178. data/lib/generators/rockstart/storage/active_storage/templates/cloudcube_util.rb +30 -0
  179. data/lib/generators/rockstart/storage/active_storage/templates/cloudcube_util_spec.rb +73 -0
  180. data/lib/generators/rockstart/storage/active_storage/templates/storage.yml.tt +15 -0
  181. data/lib/generators/rockstart/storage/memcached/USAGE +8 -0
  182. data/lib/generators/rockstart/storage/memcached/memcached_generator.rb +27 -0
  183. data/lib/generators/rockstart/{postgres → storage/postgres}/USAGE +1 -1
  184. data/lib/generators/rockstart/storage/postgres/postgres_generator.rb +20 -0
  185. data/lib/generators/rockstart/{postgres → storage/postgres}/templates/config/database.yml.tt +6 -0
  186. data/lib/generators/rockstart/{postgres → storage/postgres}/templates/migration.rb.tt +0 -0
  187. data/lib/generators/rockstart/storage/storage_generator.rb +26 -0
  188. data/lib/generators/rockstart/testing/USAGE +9 -0
  189. data/lib/generators/rockstart/testing/env/USAGE +8 -0
  190. data/lib/generators/rockstart/testing/env/env_generator.rb +24 -0
  191. data/lib/generators/rockstart/testing/env/templates/climate_control_helpers_support.rb +14 -0
  192. data/lib/generators/rockstart/testing/env/templates/dotenv.test.tt +8 -0
  193. data/lib/generators/rockstart/{rspec → testing/rspec}/USAGE +1 -1
  194. data/lib/generators/rockstart/testing/rspec/rspec_generator.rb +52 -0
  195. data/lib/generators/rockstart/{rspec → testing/rspec}/templates/support/factory_bot.rb +0 -0
  196. data/lib/generators/rockstart/{rspec → testing/rspec}/templates/support/shoulda_matchers.rb +0 -0
  197. data/lib/generators/rockstart/{rspec → testing/rspec}/templates/support/test_helpers.rb +0 -0
  198. data/lib/generators/rockstart/testing/rspec/templates/support/vcr.rb +11 -0
  199. data/lib/generators/rockstart/testing/simplecov/USAGE +9 -0
  200. data/lib/generators/rockstart/testing/simplecov/simplecov_generator.rb +11 -0
  201. data/lib/generators/rockstart/testing/testing_generator.rb +24 -0
  202. data/lib/generators/rockstart/workers/USAGE +8 -0
  203. data/lib/generators/rockstart/workers/sidekiq/USAGE +9 -0
  204. data/lib/generators/rockstart/workers/sidekiq/sidekiq_generator.rb +29 -0
  205. data/lib/generators/rockstart/workers/sidekiq/templates/sidekiq.yml.tt +5 -0
  206. data/lib/generators/rockstart/workers/sidekiq/templates/sidekiq_initializer.rb +5 -0
  207. data/lib/generators/rockstart/workers/workers_generator.rb +18 -0
  208. data/lib/rockstart/base_generator.rb +4 -5
  209. data/lib/rockstart/env.rb +3 -1
  210. data/lib/rockstart/generators/class_option_helpers.rb +154 -0
  211. data/lib/rockstart/generators/content_security_options.rb +61 -0
  212. data/lib/rockstart/generators/migration_helpers.rb +30 -0
  213. data/lib/rockstart/generators/system_helpers.rb +14 -0
  214. data/lib/rockstart/generators/template_helpers.rb +27 -0
  215. data/lib/rockstart/version.rb +1 -1
  216. metadata +212 -83
  217. data/lib/generators/rockstart/devise/devise_generator.rb +0 -258
  218. data/lib/generators/rockstart/docker/docker_generator.rb +0 -86
  219. data/lib/generators/rockstart/docker/templates/docker-compose.yml +0 -47
  220. data/lib/generators/rockstart/docker/templates/dotenv.docker.tt +0 -4
  221. data/lib/generators/rockstart/frontend_helpers/USAGE +0 -8
  222. data/lib/generators/rockstart/frontend_helpers/frontend_helpers_generator.rb +0 -65
  223. data/lib/generators/rockstart/logging/logging_generator.rb +0 -12
  224. data/lib/generators/rockstart/logging/templates/rockstart/lograge_initializer.rb +0 -50
  225. data/lib/generators/rockstart/postgres/postgres_generator.rb +0 -32
  226. data/lib/generators/rockstart/pundit/pundit_generator.rb +0 -32
  227. data/lib/generators/rockstart/quality/templates/rubocop.rake +0 -4
  228. data/lib/generators/rockstart/rspec/rspec_generator.rb +0 -70
  229. data/lib/generators/rockstart/rspec/templates/dotenv.development +0 -1
  230. data/lib/generators/rockstart/rspec/templates/dotenv.test +0 -1
  231. data/lib/generators/rockstart/rspec/templates/rspec_templates/model/model_spec.rb +0 -13
  232. data/lib/generators/rockstart/scaffold_templates/scaffold_templates_generator.rb +0 -39
  233. data/lib/generators/rockstart/scaffold_templates/templates/rspec/scaffold/api_request_spec.rb +0 -139
  234. data/lib/generators/rockstart/scaffold_templates/templates/rspec/scaffold/request_spec.rb +0 -408
  235. data/lib/generators/rockstart/security/templates/bundler_audit.rake +0 -4
  236. data/lib/generators/rockstart/smtp_mailer/smtp_mailer_generator.rb +0 -30
  237. data/lib/generators/rockstart/tailwindcss/USAGE +0 -8
  238. data/lib/generators/rockstart/tailwindcss/tailwindcss_generator.rb +0 -30
  239. data/lib/generators/rockstart/tailwindcss/templates/application.css +0 -3
  240. data/lib/generators/rockstart/tailwindcss/templates/postcss.config.js +0 -32
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ require "fileutils"
3
+
4
+ # hooks-release script generated by rockstart:deployment
5
+ # Run this script during each code release
6
+
7
+ # path to your application root.
8
+ APP_ROOT = File.expand_path("..", __dir__)
9
+
10
+ def system!(*args)
11
+ system(*args) || abort("\n== Command #{args} failed ==")
12
+ end
13
+
14
+ FileUtils.chdir APP_ROOT do
15
+ puts "== Migrating Database =="
16
+ system! "DB_STATEMENT_TIMEOUT=90s bundle exec rake db:migrate"
17
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+
5
+ RSpec.describe "Rack::Deflater", type: :request do
6
+ describe "gzip compression" do
7
+ let(:authenticated_user) { create(:user) }
8
+
9
+ before do
10
+ sign_in authenticated_user
11
+ end
12
+
13
+ it "supports gzip compression", :aggregate_failures do
14
+ ["gzip", "deflate,gzip", "gzip,deflate"].each do |compression_method|
15
+ get url_for_user_dashboard, headers: { "HTTP_ACCEPT_ENCODING" => compression_method }
16
+ expect(response.headers["Content-Encoding"]).to eq "gzip"
17
+ expect(read_gzip_body(response.body)).to be_present
18
+ end
19
+ end
20
+ end
21
+
22
+ def read_gzip_body(response_body)
23
+ require "zlib"
24
+ require "stringio"
25
+ gz = Zlib::GzipReader.new(StringIO.new(response_body.to_s))
26
+ gz.read
27
+ end
28
+ end
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+
3
+ bundle exec puma -C config/puma.rb
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+
3
+ MALLOC_ARENA_MAX=2 bundle exec sidekiq -t 25
@@ -0,0 +1,10 @@
1
+ Description:
2
+ Runs all rockstart generators used for development
3
+
4
+ Example:
5
+ rails generate rockstart:development
6
+
7
+ This will generate:
8
+ Convenient dotfiles for development
9
+ Useful Rails generator template overrides
10
+ Setup scripts for using SSL for localhost servers
@@ -0,0 +1,10 @@
1
+ Description:
2
+ Configures Audited gem for history tracking
3
+
4
+ Example:
5
+ rails generate rockstart:development:audited
6
+
7
+ This will create:
8
+ Installs the audited gem
9
+ Updates foreign keys to work for Users with polymorphic uuid
10
+ Configures it to function without a User model (Auth0)
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/class_option_helpers"
4
+ require "rockstart/generators/migration_helpers"
5
+ require "rockstart/generators/template_helpers"
6
+
7
+ module Rockstart::Development
8
+ class AuditedGenerator < Rails::Generators::Base
9
+ include Rockstart::Generators::ClassOptionHelpers
10
+ include Rockstart::Generators::MigrationHelpers
11
+ include Rockstart::Generators::TemplateHelpers
12
+
13
+ source_root File.expand_path("templates", __dir__)
14
+
15
+ auth0_class_option
16
+ postgres_class_option
17
+
18
+ def add_custom_audit_model
19
+ template "audit.rb", "app/models/audit.rb"
20
+ template "audit_spec.rb", "spec/models/audit_spec.rb"
21
+ end
22
+
23
+ def add_initializer
24
+ copy_initializer "audited"
25
+ end
26
+
27
+ def add_migrations
28
+ migration_template "install_audited.rb", "db/migrate/install_audited.rb"
29
+ end
30
+
31
+ def add_spec_support
32
+ copy_spec_support "audited"
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Custom Audit model provided by rockstart
4
+ class Audit < Audited::Audit
5
+ # Anonymize IP Addresses
6
+ def remote_address=(unsafe_address)
7
+ addr = unsafe_address.presence && IPAddr.new(unsafe_address)
8
+ if addr&.ipv4?
9
+ # set last octet to 0
10
+ super addr.mask(24).to_s
11
+ elsif addr&.ipv6?
12
+ # set last 80 bits to zeros
13
+ super addr.mask(48).to_s
14
+ else
15
+ super nil
16
+ end
17
+ end
18
+ <% if auth0? -%>
19
+
20
+ def user=(user)
21
+ if user.is_a?(::User)
22
+ # Handle PORO User Object for Auth0
23
+ self.user_uid = user.id
24
+ super nil
25
+ else
26
+ self.user_uid = nil
27
+ super
28
+ end
29
+ end
30
+
31
+ def user
32
+ super || user_uid
33
+ end
34
+ <% end -%>
35
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+
5
+ RSpec.describe Audit, type: :model do
6
+ describe "#remote_address" do
7
+ it "anonymizes IPv4 Address" do
8
+ audit = Audit.new
9
+ audit.remote_address = "37.109.235.190"
10
+ expect(audit.remote_address).to eq "37.109.235.0"
11
+ end
12
+
13
+ it "anonymizes IPv6 Address" do
14
+ audit = Audit.new
15
+ audit.remote_address = "c988:1d1:96e:67ca:31bd:b29e:5ff1:c8fb"
16
+ expect(audit.remote_address).to eq "c988:1d1:96e::"
17
+ end
18
+
19
+ it "handles nil values" do
20
+ audit = Audit.new
21
+ audit.remote_address = nil
22
+ expect(audit.remote_address).to be_nil
23
+ end
24
+ end
25
+ <% if auth0? -%>
26
+
27
+ describe "#user" do
28
+ it "handles a User model" do
29
+ user = build(:user)
30
+ audit = Audit.new
31
+ audit.user = user
32
+ expect(audit.user).to eq user.id
33
+ expect(audit.user_uid).to eq user.id
34
+ expect(audit.username).to be_nil
35
+ end
36
+
37
+ it "handles a String" do
38
+ audit = Audit.new
39
+ audit.user = "test-user"
40
+ expect(audit.user).to eq "test-user"
41
+ expect(audit.user_uid).to be_nil
42
+ expect(audit.username).to eq "test-user"
43
+ end
44
+
45
+ it "handles nil values" do
46
+ audit = Audit.new
47
+ audit.user = nil
48
+ expect(audit.user).to be_nil
49
+ expect(audit.user_uid).to be_nil
50
+ expect(audit.username).to be_nil
51
+ end
52
+ end
53
+ <% end -%>
54
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ Rails.application.config.after_initialize do
4
+ Audited.audit_class = ::Audit
5
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "audited-rspec"
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ class InstallAudited < ActiveRecord::Migration<%= migration_version %>
4
+ def self.up
5
+ create_table :audits, force: true do |t|
6
+ t.column :auditable_id, :integer
7
+ t.column :auditable_type, :string
8
+ t.column :associated_id, :integer
9
+ t.column :associated_type, :string
10
+ <% if auth0? -%>
11
+ t.column :user_uid, :string
12
+ <% end -%>
13
+ <% if postgres? -%>
14
+ t.column :user_id, :uuid
15
+ t.column :user_type, :string
16
+ <% else -%>
17
+ t.column :user_id, :index
18
+ t.column :user_type, :string
19
+ <% end -%>
20
+ t.column :username, :string
21
+ t.column :action, :string
22
+ <% if postgres? -%>
23
+ t.column :audited_changes, :jsonb
24
+ <% else -%>
25
+ t.column :audited_changes, :text
26
+ <% end -%>
27
+ t.column :version, :integer, default: 0
28
+ t.column :comment, :string
29
+ t.column :remote_address, :string
30
+ t.column :request_uuid, :string
31
+ t.column :created_at, :datetime
32
+
33
+ t.index %i[auditable_type auditable_id version], name: "auditable_index"
34
+ t.index %i[associated_type associated_id], name: "associated_index"
35
+ t.index %i[user_type user_id], name: "user_index"
36
+ t.index :user_uid, name: "user_uid_index"
37
+ t.index :request_uuid
38
+ t.index :created_at
39
+ end
40
+ end
41
+
42
+ def self.down
43
+ drop_table :audits
44
+ end
45
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/class_option_helpers"
4
+
5
+ class Rockstart::DevelopmentGenerator < Rails::Generators::Base
6
+ include Rockstart::Generators::ClassOptionHelpers
7
+
8
+ desc "Sets up your app for a Rocking time writing code"
9
+
10
+ auth0_class_option
11
+ devise_class_option
12
+ postgres_class_option
13
+ pundit_class_option
14
+
15
+ def generate_dotfiles
16
+ generate "rockstart:development:env", devise_option
17
+ end
18
+
19
+ def generate_scaffold_templates
20
+ generate "rockstart:development:scaffolds", auth0_option, pundit_option
21
+ end
22
+
23
+ def generate_localhost_setup
24
+ generate "rockstart:development:localhost_setup"
25
+ end
26
+
27
+ def setup_audited
28
+ generate "rockstart:development:audited", auth0_option, postgres_option
29
+ end
30
+
31
+ def setup_friendly_id
32
+ generate "rockstart:development:friendly_id"
33
+ end
34
+
35
+ def setup_generator_overrides
36
+ generate "rockstart:development:generator_overrides"
37
+ end
38
+
39
+ def generate_readme
40
+ generate "rockstart:development:readme", auth0_option
41
+ end
42
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Generates useful dotfiles for development
3
+
4
+ Example:
5
+ rails generate rockstart:development:env
6
+
7
+ This will create:
8
+ Creates a dotfile with common configuration values
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/class_option_helpers"
4
+
5
+ module Rockstart::Development
6
+ class EnvGenerator < Rails::Generators::Base
7
+ include Rockstart::Generators::ClassOptionHelpers
8
+
9
+ source_root File.expand_path("templates", __dir__)
10
+
11
+ devise_class_option
12
+
13
+ def add_development_dotenv
14
+ template "dotenv.development.tt", ".env.development"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,4 @@
1
+ APP_HOST=localhost:3000
2
+ <%- if devise? -%>
3
+ DEVISE_MAILER_SENDER=devise-mailer@localhost
4
+ <%- end -%>
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Sets up friendly_id gem
3
+
4
+ Example:
5
+ rails generate rockstart:development:friendly_id
6
+
7
+ This will create:
8
+ A basic configuration file for friendly_id
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/template_helpers"
4
+
5
+ module Rockstart::Development
6
+ class FriendlyIdGenerator < Rails::Generators::Base
7
+ include Rockstart::Generators::TemplateHelpers
8
+
9
+ source_root File.expand_path("templates", __dir__)
10
+
11
+ def add_initializer
12
+ copy_initializer "friendly_id"
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ # FriendlyId Global Configuration
4
+ #
5
+ # Use this to set up shared configuration options for your entire application.
6
+ # Any of the configuration options shown here can also be applied to single
7
+ # models by passing arguments to the `friendly_id` class method or defining
8
+ # methods in your model.
9
+ #
10
+ # To learn more, check out the guide:
11
+ #
12
+ # http://norman.github.io/friendly_id/file.Guide.html
13
+
14
+ FriendlyId.defaults do |config|
15
+ # ## Reserved Words
16
+ #
17
+ # Some words could conflict with Rails's routes when used as slugs, or are
18
+ # undesirable to allow as slugs. Edit this list as needed for your app.
19
+ config.use :reserved
20
+
21
+ config.reserved_words = %w[
22
+ new edit index session login logout users admin
23
+ page
24
+ stylesheets assets javascripts images
25
+ wp-admin wp-login password passwd
26
+ ]
27
+
28
+ config.treat_reserved_as_conflict = false
29
+
30
+ ## Slugs
31
+
32
+ # Use slugged for all friendly_ids
33
+ config.use :slugged
34
+
35
+ # Provide smaller (prettier) conflict resolution slug
36
+ config.use(Module.new do
37
+ def resolve_friendly_id_conflict(candidates)
38
+ uuid = SecureRandom.uuid
39
+ [
40
+ apply_slug_limit(candidates.first, uuid),
41
+ SecureRandom.hex(5)
42
+ ].compact.join(friendly_id_config.sequence_separator)
43
+ end
44
+ end)
45
+
46
+ # By default, FriendlyId's :slugged addon expects the slug column to be named
47
+ # 'slug', but you can change it if you wish.
48
+ config.slug_column = "slug"
49
+
50
+ # By default, slug has no size limit, but you can change it if you wish.
51
+ config.slug_limit = 100
52
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Explain the generator
3
+
4
+ Example:
5
+ rails generate generator_overrides Thing
6
+
7
+ This will create:
8
+ what/will/it/create
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rockstart::Development
4
+ class GeneratorOverridesGenerator < Rails::Generators::Base
5
+ include Rails::Generators::AppName
6
+
7
+ source_root File.expand_path("templates", __dir__)
8
+
9
+ def add_custom_resource_routes_generator
10
+ template "resource_route_generator.rb",
11
+ "lib/generators/rails/#{app_name}_resource_route_generator.rb"
12
+ end
13
+
14
+ # rubocop:disable Metrics/MethodLength
15
+ def override_generator_defaults
16
+ application do
17
+ <<~DEFAULTS
18
+ config.generators do |g|
19
+ g.assets false
20
+ g.helper false
21
+ g.javascripts false
22
+ g.scaffold_stylesheet false
23
+ g.stylesheets false
24
+ g.resource_route :#{app_name}_resource_route
25
+ end
26
+ DEFAULTS
27
+ end
28
+ end
29
+ # rubocop:enable Metrics/MethodLength
30
+ end
31
+ end