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
@@ -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