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
@@ -4,10 +4,10 @@ FROM <%= @root_image %>
4
4
  RUN apt-get update -qq \
5
5
  && apt-get install -y build-essential \
6
6
  && apt-get install -y libxml2-dev libxslt1-dev \
7
- <%- if @postgres -%>
7
+ <%- if postgres? -%>
8
8
  && apt-get install -y libpq-dev \
9
9
  <%- end -%>
10
- <%- if @assets -%>
10
+ <%- if frontend? -%>
11
11
  && curl -sL https://deb.nodesource.com/setup_10.x | bash - \
12
12
  && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
13
13
  && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
@@ -16,7 +16,7 @@ RUN apt-get update -qq \
16
16
  && apt-get clean
17
17
 
18
18
  ENV RACK_ENV=production \
19
- <%- if @assets -%>
19
+ <%- if frontend? -%>
20
20
  NODE_ENV=production \
21
21
  <%- end -%>
22
22
  RAILS_LOG_TO_STDOUT=true \
@@ -37,11 +37,12 @@ ADD . /<%= @app_home %>
37
37
 
38
38
  # Perform post-installation tasks
39
39
  RUN bundle exec rake tmp:create \
40
- <%- if @assets -%>
40
+ <%- if frontend? -%>
41
41
  && bundle exec rake assets:precompile \
42
+ && bundle exec rake assets:clean \
42
43
  <%- end -%>
43
44
  && bundle exec rake tmp:clear
44
45
 
45
46
  # Start the application server
46
47
  EXPOSE 3000
47
- CMD ["bundle", "exec", "rails", "server", "-p", "3000", "-b", "0.0.0.0"]
48
+ CMD ["bin/web"]
@@ -10,11 +10,14 @@ services:
10
10
  - mailcatcher
11
11
  environment:
12
12
  - RAILS_ENV=test
13
- <%- if postgres? -%>
14
- - TEST_DATABASE_URL=postgres://<%= app_name %>:<%= app_name %>_test@db/<%= app_name %>_test
13
+ <%- if rollbar? -%>
14
+ - ROLLBAR_ENV=test-docker
15
15
  <%- end -%>
16
16
  - SMTP_SERVER=mailcatcher
17
17
  - SMTP_PORT=1025
18
+ <%- if postgres? -%>
19
+ - TEST_DATABASE_URL=postgres://<%= app_name %>:<%= app_name %>_test@db/<%= app_name %>_test
20
+ <%- end -%>
18
21
  env_file:
19
22
  - ./.env.test
20
23
  <%- if postgres? -%>
@@ -0,0 +1,74 @@
1
+ version: '2.0'
2
+ services:
3
+ web:
4
+ build: .
5
+ env_file:
6
+ - ./.env
7
+ - ./.env.docker
8
+ depends_on:
9
+ <%- if postgres? -%>
10
+ - db
11
+ <%- end -%>
12
+ <%- if memcached? -%>
13
+ - memcached
14
+ <%- end -%>
15
+ <%- if sidekiq? -%>
16
+ - redis
17
+ <%- end -%>
18
+ volumes:
19
+ - static-assets:/<%= @app_home %>/public
20
+ - local-storage:/<%= @app_home %>/storage
21
+ <%- if postgres? -%>
22
+ db:
23
+ image: postgres
24
+ env_file:
25
+ - ./.env.docker-db
26
+ volumes:
27
+ - ./tmp/db:/var/lib/postgresql/data
28
+ <%- end -%>
29
+ mailcatcher:
30
+ image: sj26/mailcatcher
31
+ ports:
32
+ - 1080:1080
33
+ <%- if memcached? -%>
34
+ memcached:
35
+ image: memcached:alpine
36
+ <%- end -%>
37
+ <%- if sidekiq? -%>
38
+ redis:
39
+ image: redis:alpine
40
+ <%- end -%>
41
+ <%- if sidekiq? -%>
42
+ worker:
43
+ build: .
44
+ command: ./bin/worker
45
+ env_file:
46
+ - ./.env
47
+ - ./.env.docker
48
+ depends_on:
49
+ <%- if postgres? -%>
50
+ - db
51
+ <%- end -%>
52
+ <%- if memcached? -%>
53
+ - memcached
54
+ <%- end -%>
55
+ - redis
56
+ <%- end -%>
57
+ web-nginx:
58
+ build:
59
+ context: ./docker/web/
60
+ depends_on:
61
+ - web
62
+ ports:
63
+ - 80:80
64
+ - 443:443
65
+ - 8000:443 # for development
66
+ volumes:
67
+ - ./certs/localhost:/<%= @app_home %>/certs
68
+ - static-assets:/<%= @app_home %>/public
69
+ - local-storage:/<%= @app_home %>/storage
70
+ - web-logs:/<%= @app_home %>/log
71
+ volumes:
72
+ static-assets: {}
73
+ local-storage: {}
74
+ web-logs: {}
@@ -0,0 +1,3 @@
1
+ POSTGRES_DB=<%= app_name %>_production
2
+ POSTGRES_USER=<%= app_name %>
3
+ POSTGRES_PASSWORD=<%= example_db_password %>
@@ -0,0 +1,20 @@
1
+ APP_HOST=localhost
2
+ <%- if postgres? -%>
3
+ DATABASE_URL=postgres://<%= app_name %>:<%= example_db_password %>@db/<%= app_name %>_production
4
+ <%- end -%>
5
+ <%- if devise? -%>
6
+ DEVISE_MAILER_SENDER=devise-mailer@<%= app_name %>
7
+ <%- end -%>
8
+ <%- if memcached? -%>
9
+ MEMCACHE_SERVERS=memcached
10
+ <%- end -%>
11
+ OKCOMPUTER_USERNAME=okcomputer
12
+ OKCOMPUTER_PASSWORD=okcomputer
13
+ <%- if sidekiq? -%>
14
+ REDIS_URL=redis://redis
15
+ <%- end -%>
16
+ <%- if rollbar? -%>
17
+ ROLLBAR_ENV=development-docker
18
+ <%- end -%>
19
+ SMTP_SERVER=mailcatcher
20
+ SMTP_PORT=1025
@@ -1,5 +1,5 @@
1
1
  upstream rails_app {
2
- server app:3000;
2
+ server web:3000;
3
3
  }
4
4
 
5
5
  server {
@@ -41,6 +41,25 @@ server {
41
41
  break;
42
42
  }
43
43
 
44
+ # Serve Sidekiq UI along with its assets
45
+ location /sidekiq/ {
46
+ proxy_set_header X-Real-IP $remote_addr;
47
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
48
+ proxy_set_header X-Forwarded-Proto $scheme;
49
+ proxy_set_header Host $http_host;
50
+
51
+ proxy_redirect off;
52
+ proxy_pass http://rails_app/sidekiq/;
53
+ }
54
+
55
+ # Defines the internal location to support the X-Sendfile feature
56
+ # for the delivery of static files from the folder: /<%= @app_home %>/storage
57
+ # http://wiki.nginx.org/XSendfile
58
+ location /__storage/ {
59
+ internal;
60
+ alias /<%= @app_home %>/storage/;
61
+ }
62
+
44
63
  # send non-static file requests to the app server
45
64
  location / {
46
65
  try_files $uri @rails;
@@ -51,6 +70,10 @@ server {
51
70
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
52
71
  proxy_set_header X-Forwarded-Proto $scheme;
53
72
  proxy_set_header Host $http_host;
73
+
74
+ proxy_set_header X-Sendfile-Type X-Accel-Redirect;
75
+ proxy_set_header X-Accel-Mapping /<%= @app_home %>/storage/=/__storage/;
76
+
54
77
  proxy_redirect off;
55
78
  proxy_pass http://rails_app;
56
79
  }
@@ -0,0 +1,9 @@
1
+ Description:
2
+ Configures a Rails app for quick deployment on Heroku
3
+
4
+ Example:
5
+ rails generate rockstart:deployment:heroku
6
+
7
+ This will create:
8
+ A Procfile that runs the bin/hooks-release script
9
+ An app.json that prepares an app for a review build
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rockstart/generators/class_option_helpers"
4
+ require "rockstart/generators/template_helpers"
5
+
6
+ module Rockstart::Deployment
7
+ class HerokuGenerator < Rails::Generators::Base
8
+ include Rails::Generators::AppName
9
+ include Rockstart::Generators::ClassOptionHelpers
10
+ include Rockstart::Generators::TemplateHelpers
11
+
12
+ source_root File.expand_path("templates", __dir__)
13
+
14
+ class_option :free_tier, type: :boolean,
15
+ desc: "Prioritizes configratons and addons for the free tier",
16
+ default: true
17
+
18
+ auth0_class_option
19
+ memcached_class_option
20
+ postgres_class_option
21
+ rollbar_class_option
22
+ sidekiq_class_option
23
+
24
+ def create_procfile
25
+ template "Procfile"
26
+ end
27
+
28
+ def create_app_json
29
+ template "app.json"
30
+ end
31
+
32
+ def add_slugignore
33
+ copy_file "slugignore", ".slugignore"
34
+ end
35
+
36
+ def add_rack_task
37
+ template "heroku.rake", "lib/tasks/heroku.rake"
38
+ end
39
+
40
+ def add_deploy_script
41
+ script_template "deploy-heroku"
42
+ end
43
+
44
+ private
45
+
46
+ def free_tier?
47
+ options.fetch(:free_tier)
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,5 @@
1
+ release: ./bin/hooks-release
2
+ web: ./bin/web
3
+ <%- if sidekiq? -%>
4
+ worker: ./bin/worker
5
+ <%- end -%>
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "<%= app_name %>",
3
+ "addons": [
4
+ <%- if auth0? -%>
5
+ {
6
+ "plan": "auth0:free",
7
+ "options": {
8
+ "type": "rails"
9
+ }
10
+ },
11
+ <%- end -%>
12
+ <% if free_tier? -%>
13
+ "cloudcube:free",
14
+ <% end -%>
15
+ <%- if postgres? -%>
16
+ "heroku-postgresql:hobby-dev",
17
+ <%- end -%>
18
+ <%- if sidekiq? -%>
19
+ "heroku-redis:hobby-dev",
20
+ <%- end -%>
21
+ <%- if memcached? -%>
22
+ "memcachier:dev",
23
+ <%- end -%>
24
+ "papertrail:choklad",
25
+ <%- if rollbar? -%>
26
+ "rollbar:free",
27
+ <%- end -%>
28
+ ],
29
+ "env": {
30
+ <% if free_tier? -%>
31
+ "DB_CONNECT_TIMEOUT": "5",
32
+ <% end -%>
33
+ "OKCOMPUTER_USERNAME": {
34
+ "description": "The username for accessing the /health endpoint.",
35
+ "value": "okcomputer"
36
+ },
37
+ "OKCOMPUTER_PASSWORD": {
38
+ "description": "The password for accessing the /health endpoint.",
39
+ "generator": "secret"
40
+ },
41
+ "RAILS_ENV": "production",
42
+ <%- if rollbar? -%>
43
+ "ROLLBAR_ENV": "development-heroku",
44
+ <%- end -%>
45
+ },
46
+ "stack": "heroku-18",
47
+ "scripts": {
48
+ "postdeploy": "./bin/hooks-postdeploy"
49
+ },
50
+ }
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "fileutils"
5
+
6
+ # deployment script generated by rockstart:deployment
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 "== Installing Heroku CLI =="
17
+ system! "which heroku && brew upgrade heroku/brew/heroku || " \
18
+ "(brew tap heroku/brew && brew install heroku)"
19
+
20
+ puts "\n== Creating Development App =="
21
+ system! "git remote show heroku || heroku create"
22
+
23
+ puts "\n== Configuring APP_HOST =="
24
+ current_app_host = `heroku config:get APP_HOST -s`.split("=").last
25
+ if current_app_host.strip.empty?
26
+ require "json"
27
+ app_host = JSON.parse(`heroku domains --json`).first.fetch("hostname")
28
+ system! "heroku config:set APP_HOST=#{app_host}"
29
+ else
30
+ puts "Skipping: APP_HOST has already been set to #{current_app_host}"
31
+ end
32
+
33
+ puts "\n== Pushing to Heroku =="
34
+ system! "git push heroku master"
35
+
36
+ puts "\n== Dumping Heroku Config =="
37
+ if !File.exists?(File.join(APP_ROOT, ".env"))
38
+ system! "bundle exec rake heroku:dump_config"
39
+ else
40
+ puts "Skipping: a .env file already exists."
41
+ end
42
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :heroku do
4
+ ENV_VARIABLES = %w[
5
+ <%- if auth0? -%>
6
+ AUTH0_CLIENT_ID
7
+ AUTH0_CLIENT_SECRET
8
+ AUTH0_DOMAIN
9
+ <%- end -%>
10
+ CLOUDCUBE_ACCESS_KEY_ID
11
+ CLOUDCUBE_SECRET_ACCESS_KEY
12
+ CLOUDCUBE_URL
13
+ <%- if rollbar? -%>
14
+ ROLLBAR_ACCESS_TOKEN
15
+ <%- end -%>
16
+ ].freeze
17
+
18
+ def system!(*args)
19
+ system(*args) || abort("\n== Command #{args} failed ==")
20
+ end
21
+
22
+ task :dump_config do
23
+ system! "heroku config -s | grep '#{ENV_VARIABLES.join('\|')}' | tee -a .env"
24
+ end
25
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Configures a Rails app to work with NGINX
3
+
4
+ Example:
5
+ rails generate rockstart:deployment:nginx
6
+
7
+ This will create:
8
+ Configure sendfile parameters in environments/production.rb
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rockstart::Deployment
4
+ class NginxGenerator < Rails::Generators::Base
5
+ source_root File.expand_path("templates", __dir__)
6
+
7
+ SENDFILE_REGEX = /#.+\.x_sendfile_header.+# for NGINX$/.freeze
8
+
9
+ def configure_sendfiles
10
+ inject_into_file "config/environments/production.rb", after: SENDFILE_REGEX do
11
+ <<~'SENDFILE'.split("\n").map { |line| " #{line}".rstrip }.join("\n")
12
+
13
+ unless ENV['RAILS_SERVE_STATIC_FILES'].present?
14
+ config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX
15
+ end
16
+ SENDFILE
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+ require 'fileutils'
3
+
4
+ # hooks-postdeploy script generated by rockstart:deployment
5
+ # Run this script after provisioning a new App
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 '== Creating Database =='
16
+ system! 'bundle exec rake db:create'
17
+ <%- if rollbar? -%>
18
+
19
+ puts "\n== Testing Rollbar ==
20
+ system "bundle exec rake rollbar:test" || puts("\n-- Rollbar test failed --")
21
+ <%- end -%>
22
+ end