kowl 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (250) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +7 -0
  3. data/README.md +383 -0
  4. data/bin/console +14 -0
  5. data/bin/kowl +106 -0
  6. data/bin/setup +13 -0
  7. data/lib/kowl/actions.rb +240 -0
  8. data/lib/kowl/docker.rb +447 -0
  9. data/lib/kowl/generators/README.md +5 -0
  10. data/lib/kowl/generators/action_generator.rb +113 -0
  11. data/lib/kowl/generators/admin_generator.rb +114 -0
  12. data/lib/kowl/generators/assets_generator.rb +188 -0
  13. data/lib/kowl/generators/base.rb +40 -0
  14. data/lib/kowl/generators/circleci_generator.rb +11 -0
  15. data/lib/kowl/generators/config_generator.rb +180 -0
  16. data/lib/kowl/generators/controller_generator.rb +64 -0
  17. data/lib/kowl/generators/database_generator.rb +42 -0
  18. data/lib/kowl/generators/decorators_generator.rb +16 -0
  19. data/lib/kowl/generators/docker_generator.rb +40 -0
  20. data/lib/kowl/generators/dotfiles_generator.rb +73 -0
  21. data/lib/kowl/generators/libs_generator.rb +19 -0
  22. data/lib/kowl/generators/mailer_generator.rb +58 -0
  23. data/lib/kowl/generators/misc_generator.rb +20 -0
  24. data/lib/kowl/generators/overrides/app_base.rb +15 -0
  25. data/lib/kowl/generators/overrides/app_builder.rb +58 -0
  26. data/lib/kowl/generators/overrides/app_generator.rb +249 -0
  27. data/lib/kowl/generators/pages_generator.rb +46 -0
  28. data/lib/kowl/generators/routes_generator.rb +20 -0
  29. data/lib/kowl/generators/sidekiq_generator.rb +31 -0
  30. data/lib/kowl/generators/staging_generator.rb +14 -0
  31. data/lib/kowl/generators/test_generator.rb +42 -0
  32. data/lib/kowl/generators/text_files_generator.rb +41 -0
  33. data/lib/kowl/generators/users_and_auth_generator.rb +143 -0
  34. data/lib/kowl/generators/uuid_generator.rb +39 -0
  35. data/lib/kowl/generators/views_and_helpers_generator.rb +104 -0
  36. data/lib/kowl/geodb.rb +96 -0
  37. data/lib/kowl/helpers.rb +139 -0
  38. data/lib/kowl/templates/Gemfile.erb.tt +253 -0
  39. data/lib/kowl/templates/README.md.erb +33 -0
  40. data/lib/kowl/templates/app/assets/javascripts/semantic.js.tt +26 -0
  41. data/lib/kowl/templates/app/assets/stylesheets/administrate/application.scss +44 -0
  42. data/lib/kowl/templates/app/assets/stylesheets/bootstrap/_custom_styling.scss +38 -0
  43. data/lib/kowl/templates/app/assets/stylesheets/bootstrap/application-mailer.scss +1 -0
  44. data/lib/kowl/templates/app/assets/stylesheets/bootstrap/application.scss +14 -0
  45. data/lib/kowl/templates/app/assets/stylesheets/bootstrap/components/_alerts.scss +7 -0
  46. data/lib/kowl/templates/app/assets/stylesheets/bootstrap/components/_errors.scss +28 -0
  47. data/lib/kowl/templates/app/assets/stylesheets/bootstrap/components/_navbar.scss +17 -0
  48. data/lib/kowl/templates/app/assets/stylesheets/bootstrap/variables.scss +6 -0
  49. data/lib/kowl/templates/app/assets/stylesheets/semantic/_custom_styling.scss +20 -0
  50. data/lib/kowl/templates/app/assets/stylesheets/semantic/application.scss +24 -0
  51. data/lib/kowl/templates/app/controllers/admin/application_controller.rb +29 -0
  52. data/lib/kowl/templates/app/controllers/admin/login_activities_controller.rb +29 -0
  53. data/lib/kowl/templates/app/controllers/admin/users_controller.rb +37 -0
  54. data/lib/kowl/templates/app/controllers/concerns/auth/authentication.rb +18 -0
  55. data/lib/kowl/templates/app/controllers/concerns/auth/authorization.rb +20 -0
  56. data/lib/kowl/templates/app/controllers/concerns/auth/error_handlers.rb +27 -0
  57. data/lib/kowl/templates/app/controllers/concerns/noauth/error_handlers.rb +25 -0
  58. data/lib/kowl/templates/app/controllers/users_controller.rb +17 -0
  59. data/lib/kowl/templates/app/dashboards/login_activity_dashboard.rb.tt +59 -0
  60. data/lib/kowl/templates/app/dashboards/rich_text_body_dashboard.rb.tt +17 -0
  61. data/lib/kowl/templates/app/dashboards/user_dashboard.rb.tt +60 -0
  62. data/lib/kowl/templates/app/fields/gravatar_field.rb +10 -0
  63. data/lib/kowl/templates/app/fields/rich_text_area_field.rb +8 -0
  64. data/lib/kowl/templates/app/inputs/rich_text_area_input.rb +11 -0
  65. data/lib/kowl/templates/app/javascript/administrate/components/date_time_picker.js.tt +32 -0
  66. data/lib/kowl/templates/app/javascript/administrate/components/table.js.tt +49 -0
  67. data/lib/kowl/templates/app/javascript/administrate/index.js +3 -0
  68. data/lib/kowl/templates/app/javascript/packs/administrate.js.tt +21 -0
  69. data/lib/kowl/templates/app/javascript/packs/semantic.js +11 -0
  70. data/lib/kowl/templates/app/mailers/application_mailer.rb +7 -0
  71. data/lib/kowl/templates/app/mailers/devise_mailer.rb +5 -0
  72. data/lib/kowl/templates/app/models/login_activity.rb.tt +29 -0
  73. data/lib/kowl/templates/app/models/user.rb.tt +72 -0
  74. data/lib/kowl/templates/app/policies/application_policy.rb +38 -0
  75. data/lib/kowl/templates/app/policies/login_activity_policy.rb +35 -0
  76. data/lib/kowl/templates/app/policies/user_policy.rb +43 -0
  77. data/lib/kowl/templates/app/views/admin/templates/navigation.erb.tt +23 -0
  78. data/lib/kowl/templates/app/views/admin/views/application/_javascript.html.erb +21 -0
  79. data/lib/kowl/templates/app/views/admin/views/users/_collection.html.erb +102 -0
  80. data/lib/kowl/templates/app/views/admin/views/users/_form.html.erb +46 -0
  81. data/lib/kowl/templates/app/views/admin/views/users/edit.html.erb +36 -0
  82. data/lib/kowl/templates/app/views/admin/views/users/index.html.erb +66 -0
  83. data/lib/kowl/templates/app/views/fields/gravatar_field/_form.html.erb +6 -0
  84. data/lib/kowl/templates/app/views/fields/gravatar_field/_index.html.erb +1 -0
  85. data/lib/kowl/templates/app/views/fields/gravatar_field/_show.html.erb +1 -0
  86. data/lib/kowl/templates/app/views/fields/rich_text_area_field/_form.html.erb +6 -0
  87. data/lib/kowl/templates/app/views/fields/rich_text_area_field/_index.html.erb +1 -0
  88. data/lib/kowl/templates/app/views/fields/rich_text_area_field/_show.html.erb +1 -0
  89. data/lib/kowl/templates/app/views/layouts/admin.html.erb.tt +47 -0
  90. data/lib/kowl/templates/app/views/layouts/devise_mailer.html.erb +14 -0
  91. data/lib/kowl/templates/app/views/pages/welcome/bootstrap.html.erb +18 -0
  92. data/lib/kowl/templates/app/views/pages/welcome/bootstrap.html.haml +17 -0
  93. data/lib/kowl/templates/app/views/pages/welcome/bootstrap.html.slim +17 -0
  94. data/lib/kowl/templates/app/views/pages/welcome/default.html.erb +0 -0
  95. data/lib/kowl/templates/app/views/pages/welcome/default.html.haml +0 -0
  96. data/lib/kowl/templates/app/views/pages/welcome/default.html.slim +0 -0
  97. data/lib/kowl/templates/app/views/pages/welcome/semantic.html.erb +20 -0
  98. data/lib/kowl/templates/app/views/pages/welcome/semantic.html.haml +17 -0
  99. data/lib/kowl/templates/app/views/pages/welcome/semantic.html.slim +17 -0
  100. data/lib/kowl/templates/app/views/shared/footer/bootstrap.html.erb.tt +5 -0
  101. data/lib/kowl/templates/app/views/shared/footer/bootstrap.html.haml.tt +3 -0
  102. data/lib/kowl/templates/app/views/shared/footer/bootstrap.html.slim.tt +3 -0
  103. data/lib/kowl/templates/app/views/shared/footer/semantic.html.erb.tt +7 -0
  104. data/lib/kowl/templates/app/views/shared/footer/semantic.html.haml.tt +5 -0
  105. data/lib/kowl/templates/app/views/shared/footer/semantic.html.slim.tt +5 -0
  106. data/lib/kowl/templates/app/views/shared/navigation/bootstrap.html.erb.tt +51 -0
  107. data/lib/kowl/templates/app/views/shared/navigation/bootstrap.html.haml.tt +36 -0
  108. data/lib/kowl/templates/app/views/shared/navigation/bootstrap.html.slim.tt +36 -0
  109. data/lib/kowl/templates/app/views/shared/navigation/semantic.html.erb.tt +48 -0
  110. data/lib/kowl/templates/app/views/shared/navigation/semantic.html.haml.tt +36 -0
  111. data/lib/kowl/templates/app/views/shared/navigation/semantic.html.slim.tt +36 -0
  112. data/lib/kowl/templates/app/workers/scheduler/pghero_scheduler.rb +11 -0
  113. data/lib/kowl/templates/config/autoprefixer.yml +4 -0
  114. data/lib/kowl/templates/config/db/mysql.yml.tt +43 -0
  115. data/lib/kowl/templates/config/db/oracle.yml.tt +29 -0
  116. data/lib/kowl/templates/config/db/postgresql.yml.tt +37 -0
  117. data/lib/kowl/templates/config/db/sqlite3.yml.tt +20 -0
  118. data/lib/kowl/templates/config/db/sqlserver.yml.tt +28 -0
  119. data/lib/kowl/templates/config/initializers/administrate.rb.tt +9 -0
  120. data/lib/kowl/templates/config/initializers/bullet.rb +21 -0
  121. data/lib/kowl/templates/config/initializers/devise-security.rb +44 -0
  122. data/lib/kowl/templates/config/initializers/devise_argon2.rb +29 -0
  123. data/lib/kowl/templates/config/initializers/faker.rb +6 -0
  124. data/lib/kowl/templates/config/initializers/generators.rb.tt +31 -0
  125. data/lib/kowl/templates/config/initializers/geocoder.rb +10 -0
  126. data/lib/kowl/templates/config/initializers/letter_opener.rb +13 -0
  127. data/lib/kowl/templates/config/initializers/lockbox.rb +11 -0
  128. data/lib/kowl/templates/config/initializers/logging.rb +6 -0
  129. data/lib/kowl/templates/config/initializers/lograge.rb +7 -0
  130. data/lib/kowl/templates/config/initializers/logstop.rb +4 -0
  131. data/lib/kowl/templates/config/initializers/middleware.rb +9 -0
  132. data/lib/kowl/templates/config/initializers/oj.rb +7 -0
  133. data/lib/kowl/templates/config/initializers/pagy.rb.tt +16 -0
  134. data/lib/kowl/templates/config/initializers/postmark.rb +8 -0
  135. data/lib/kowl/templates/config/initializers/rack_attack.rb.tt +71 -0
  136. data/lib/kowl/templates/config/initializers/sass.rb +5 -0
  137. data/lib/kowl/templates/config/initializers/sidekiq.rb +11 -0
  138. data/lib/kowl/templates/config/initializers/simpleform/semantic.rb +225 -0
  139. data/lib/kowl/templates/config/initializers/slim.rb +6 -0
  140. data/lib/kowl/templates/config/initializers/sparkpost.rb +13 -0
  141. data/lib/kowl/templates/config/routes.rb.tt +28 -0
  142. data/lib/kowl/templates/config/sidekiq.yml.tt +17 -0
  143. data/lib/kowl/templates/db/migrations/create_action_text_tables.action_text.rb.tt +16 -0
  144. data/lib/kowl/templates/db/migrations/create_active_storage_tables.active_storage.rb.tt +29 -0
  145. data/lib/kowl/templates/db/migrations/devise.rb.tt +59 -0
  146. data/lib/kowl/templates/db/migrations/login_activities.rb.tt +41 -0
  147. data/lib/kowl/templates/db/seeds.rb.tt +14 -0
  148. data/lib/kowl/templates/docker/Dockerfile.alpine.tt +92 -0
  149. data/lib/kowl/templates/docker/Dockerfile.debian.tt +133 -0
  150. data/lib/kowl/templates/docker/docker-compose.yml.tt +55 -0
  151. data/lib/kowl/templates/docker/mysql/Dockerfile.tt +15 -0
  152. data/lib/kowl/templates/dotfiles/Aptfile.tt +34 -0
  153. data/lib/kowl/templates/dotfiles/Brewfile.tt +49 -0
  154. data/lib/kowl/templates/dotfiles/Procfile.tt +12 -0
  155. data/lib/kowl/templates/dotfiles/codeclimate.yml +76 -0
  156. data/lib/kowl/templates/dotfiles/coffeelint.json +10 -0
  157. data/lib/kowl/templates/dotfiles/coffeelintignore +15 -0
  158. data/lib/kowl/templates/dotfiles/dockerignore +23 -0
  159. data/lib/kowl/templates/dotfiles/editorconfig +13 -0
  160. data/lib/kowl/templates/dotfiles/env.tt +58 -0
  161. data/lib/kowl/templates/dotfiles/erb-lint.yml +10 -0
  162. data/lib/kowl/templates/dotfiles/erdconfig.tt +24 -0
  163. data/lib/kowl/templates/dotfiles/eslintignore +20 -0
  164. data/lib/kowl/templates/dotfiles/eslintrc.js +31 -0
  165. data/lib/kowl/templates/dotfiles/fasterer.yml +14 -0
  166. data/lib/kowl/templates/dotfiles/foreman +1 -0
  167. data/lib/kowl/templates/dotfiles/gitattributes +15 -0
  168. data/lib/kowl/templates/dotfiles/gitignore +69 -0
  169. data/lib/kowl/templates/dotfiles/haml-lint.yml +23 -0
  170. data/lib/kowl/templates/dotfiles/jsbeautifyrc +15 -0
  171. data/lib/kowl/templates/dotfiles/jshintrc +3 -0
  172. data/lib/kowl/templates/dotfiles/mailmap +3 -0
  173. data/lib/kowl/templates/dotfiles/nvmrc +1 -0
  174. data/lib/kowl/templates/dotfiles/prettierignore +21 -0
  175. data/lib/kowl/templates/dotfiles/prettierrc.js +62 -0
  176. data/lib/kowl/templates/dotfiles/pryrc +7 -0
  177. data/lib/kowl/templates/dotfiles/rspec +3 -0
  178. data/lib/kowl/templates/dotfiles/rubocop.yml.tt +78 -0
  179. data/lib/kowl/templates/dotfiles/scss-lint.yml +132 -0
  180. data/lib/kowl/templates/dotfiles/simplecov +19 -0
  181. data/lib/kowl/templates/dotfiles/slim-lint.yml +23 -0
  182. data/lib/kowl/templates/dotfiles/slugignore +10 -0
  183. data/lib/kowl/templates/dotfiles/yamllint +7 -0
  184. data/lib/kowl/templates/dotfiles/yarnclean +46 -0
  185. data/lib/kowl/templates/lib/tasks/stats.rake +42 -0
  186. data/lib/kowl/templates/tests/factories/README.md +0 -0
  187. data/lib/kowl/templates/tests/factories/login_activity.rb +11 -0
  188. data/lib/kowl/templates/tests/factories/user.rb +11 -0
  189. data/lib/kowl/templates/tests/minitest/README.md +3 -0
  190. data/lib/kowl/templates/tests/minitest/application_system_test_case.rb +7 -0
  191. data/lib/kowl/templates/tests/minitest/controllers/pages_controller_test.rb +10 -0
  192. data/lib/kowl/templates/tests/minitest/models/login_activity_test.rb +8 -0
  193. data/lib/kowl/templates/tests/minitest/models/user_test.rb +15 -0
  194. data/lib/kowl/templates/tests/minitest/policies/login_activity_policy_test.rb +7 -0
  195. data/lib/kowl/templates/tests/minitest/policies/user_policy_test.rb +7 -0
  196. data/lib/kowl/templates/tests/minitest/support/capybara.rb +38 -0
  197. data/lib/kowl/templates/tests/minitest/support/database_cleaner.rb +20 -0
  198. data/lib/kowl/templates/tests/minitest/support/database_cleaner_support.rb +15 -0
  199. data/lib/kowl/templates/tests/minitest/support/deferred_garbage_collection.rb +21 -0
  200. data/lib/kowl/templates/tests/minitest/support/devise.rb +16 -0
  201. data/lib/kowl/templates/tests/minitest/support/factories.rb +6 -0
  202. data/lib/kowl/templates/tests/minitest/support/formulaic.rb +8 -0
  203. data/lib/kowl/templates/tests/minitest/support/helpers/devise_helper.rb +57 -0
  204. data/lib/kowl/templates/tests/minitest/support/papertrail.rb +17 -0
  205. data/lib/kowl/templates/tests/minitest/support/pundit.rb +0 -0
  206. data/lib/kowl/templates/tests/minitest/support/shoulda.rb +11 -0
  207. data/lib/kowl/templates/tests/minitest/support/simplecov.rb +8 -0
  208. data/lib/kowl/templates/tests/minitest/test_helper.rb +17 -0
  209. data/lib/kowl/templates/tests/rspec/README.md +9 -0
  210. data/lib/kowl/templates/tests/rspec/controllers/admin/application_controller_spec.rb +12 -0
  211. data/lib/kowl/templates/tests/rspec/controllers/admin/users_controller_spec.rb +14 -0
  212. data/lib/kowl/templates/tests/rspec/controllers/pages_controller_spec.rb +10 -0
  213. data/lib/kowl/templates/tests/rspec/features/README.md +15 -0
  214. data/lib/kowl/templates/tests/rspec/features/visitor_sign_up_spec.rb +25 -0
  215. data/lib/kowl/templates/tests/rspec/helpers/application_helper_spec.rb +7 -0
  216. data/lib/kowl/templates/tests/rspec/helpers/pages_helper_spec.rb +15 -0
  217. data/lib/kowl/templates/tests/rspec/models/login_activity_spec.rb +11 -0
  218. data/lib/kowl/templates/tests/rspec/models/user_spec.rb +21 -0
  219. data/lib/kowl/templates/tests/rspec/policies/login_activity_policy_spec.rb +59 -0
  220. data/lib/kowl/templates/tests/rspec/policies/user_policy_spec.rb +56 -0
  221. data/lib/kowl/templates/tests/rspec/rails_helper.rb +72 -0
  222. data/lib/kowl/templates/tests/rspec/requests/pages_spec.rb +11 -0
  223. data/lib/kowl/templates/tests/rspec/spec_helper.rb +96 -0
  224. data/lib/kowl/templates/tests/rspec/support/bullet.rb +17 -0
  225. data/lib/kowl/templates/tests/rspec/support/capybara.rb +37 -0
  226. data/lib/kowl/templates/tests/rspec/support/controller_testing.rb +10 -0
  227. data/lib/kowl/templates/tests/rspec/support/database_cleaner.rb +55 -0
  228. data/lib/kowl/templates/tests/rspec/support/deferred_garbage_collection.rb +32 -0
  229. data/lib/kowl/templates/tests/rspec/support/devise.rb +21 -0
  230. data/lib/kowl/templates/tests/rspec/support/factories.rb +5 -0
  231. data/lib/kowl/templates/tests/rspec/support/formulaic.rb +8 -0
  232. data/lib/kowl/templates/tests/rspec/support/helpers/devise_helpers.rb +56 -0
  233. data/lib/kowl/templates/tests/rspec/support/papertrail.rb +5 -0
  234. data/lib/kowl/templates/tests/rspec/support/pi_ci.rb +6 -0
  235. data/lib/kowl/templates/tests/rspec/support/pundit.rb +6 -0
  236. data/lib/kowl/templates/tests/rspec/support/shoulda.rb +10 -0
  237. data/lib/kowl/templates/tests/rspec/support/sidekiq.rb +10 -0
  238. data/lib/kowl/templates/tests/rspec/support/simplecov.rb +7 -0
  239. data/lib/kowl/templates/tests/rspec/support/warden.rb +8 -0
  240. data/lib/kowl/templates/text_files/AUTHORS.md +4 -0
  241. data/lib/kowl/templates/text_files/CHANGELOG.md.tt +12 -0
  242. data/lib/kowl/templates/text_files/CODE_OF_CONDUCT.md +76 -0
  243. data/lib/kowl/templates/text_files/TODO.md +7 -0
  244. data/lib/kowl/templates/text_files/VERSION +1 -0
  245. data/lib/kowl/templates/text_files/humans.txt.tt +15 -0
  246. data/lib/kowl/templates/text_files/robots.txt.tt +6 -0
  247. data/lib/kowl/templates/text_files/security.txt +6 -0
  248. data/lib/kowl/version.rb +9 -0
  249. data/lib/kowl.rb +18 -0
  250. metadata +404 -0
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateLoginActivities < ActiveRecord::Migration[6.0]
4
+ def change
5
+ create_table :login_activities do |t|
6
+ t.string :scope
7
+ t.string :strategy
8
+ <%- if options[:encrypt] -%>
9
+ t.string :identity_ciphertext
10
+ t.string :identity_bidx
11
+ <%- else -%>
12
+ t.string :identity
13
+ <%- end -%>
14
+ t.boolean :success
15
+ t.string :failure_reason
16
+ t.references :user, polymorphic: true
17
+ t.string :context
18
+ <%- if options[:encrypt] -%>
19
+ t.string :ip_ciphertext
20
+ t.string :ip_bidx
21
+ <%- else -%>
22
+ t.string :ip
23
+ <%- end -%>
24
+ t.text :user_agent
25
+ t.text :referrer
26
+ t.string :city
27
+ t.string :region
28
+ t.string :country
29
+ t.float :latitude
30
+ t.float :longitude
31
+ t.datetime :created_at
32
+ end
33
+
34
+ <%- if options[:encrypt] -%>
35
+ add_index :login_activities, :identity_bidx
36
+ add_index :login_activities, :ip_bidx
37
+ <%- else -%>
38
+ add_index :login_activities, :ip
39
+ <%- end -%>
40
+ end
41
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file should contain all the record creation needed to seed the database with its default values.
4
+ # The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
5
+ #
6
+ # Examples:
7
+ #
8
+ # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
9
+ # Character.create(name: 'Luke', movie: movies.first)
10
+ <%- unless options[:noauth] -%>
11
+ User.create!(email: 'test@test.com', password: 'Passw0rd!', password_confirmation: 'Passw0rd!', role: 'superuser', reset_password_token: '<%= SecureRandom.hex(16).force_encoding(Encoding::US_ASCII) %>', unlock_token: '<%= SecureRandom.hex(16).force_encoding(Encoding::US_ASCII) %>')
12
+ User.create!(email: 'test2@test.com', password: 'Pa$$w0rd!', password_confirmation: 'Pa$$w0rd!', role: 'staff', reset_password_token: '<%= SecureRandom.hex(16).force_encoding(Encoding::US_ASCII) %>', unlock_token: '<%= SecureRandom.hex(16).force_encoding(Encoding::US_ASCII) %>')
13
+ User.create!(email: 'test_user@test.com', password: 'P4ssW0rd!', password_confirmation: 'P4ssW0rd!', reset_password_token: '<%= SecureRandom.hex(16).force_encoding(Encoding::US_ASCII) %>', unlock_token: '<%= SecureRandom.hex(16).force_encoding(Encoding::US_ASCII) %>')
14
+ <%- end -%>
@@ -0,0 +1,92 @@
1
+ FROM ruby:<%= RUBY_VERSION %>-alpine
2
+
3
+ ########################################
4
+ # Set Environment variables
5
+ ########################################
6
+ # If a RAILS_MASTER_KEY is used to encrypt credentails within the container
7
+ # ARG RAILS_MASTER_KEY
8
+ # ENV RAILS_MASTER_KEY=$RAILS_MASTER_KEY
9
+ ARG RAILS_ENV="development"
10
+ ENV PATH="/usr/sbin:/app/bin:$PATH"
11
+ <%= dockerfile_database_args unless options[:database] == 'sqlite3' -%>
12
+ ENV APP_USER='app' \
13
+ APP_GROUP='app' \
14
+ APP_HOME='/app' \
15
+ BUNDLE_PATH="vendor/cache" \
16
+ BUNDLE_JOBS=4 \
17
+ BUNDLE_RETRY=3 \
18
+ RAILS_ENV=$RAILS_ENV \
19
+ MALLOC_ARENA_MAX=2
20
+ # MALLOC_ARENA_MAX used to improve memory GC cycle performance
21
+ # https://github.com/prestodb/presto/issues/8993
22
+ # https://github.com/heroku/heroku-buildpack-ruby/issues/751
23
+ # https://www.speedshop.co/2017/12/04/malloc-doubles-ruby-memory.html
24
+
25
+
26
+ # Update all Base OS Packages
27
+ # => Install build-base and libffi-dev which is required to install various dependencies, gems, etc
28
+ # => dumb-init is installed to prevent zombie child processes from spawning
29
+ RUN apk update && apk -U upgrade >/dev/null 2>&1 && \
30
+ apk add build-base ca-certificates libffi-dev linux-headers openssl >/dev/null 2>&1 && \
31
+ <%= alpine_docker_dependencies(options) -%>
32
+ rm -rf /tmp/* /var/tmp/* /var/cache/apk/* && \
33
+ truncate -s 0 /var/log/*log
34
+
35
+ <%- unless options[:database] == 'sqlite3' && options[:skip_sidekiq] -%>
36
+ # Dockerize is used to prevent the application container from dieing (because other services haven't finished starting yet)
37
+ # => This is because some of the database containers have an initialization time and will cause your application to fail if it tries to create the application database before mysql has loaded
38
+ ENV DOCKERIZE_VERSION v0.6.1
39
+ RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz && \
40
+ tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz && \
41
+ rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
42
+ <%- end -%>
43
+
44
+ ########################################
45
+ # Disable gem documentation downloading
46
+ ########################################
47
+ RUN mkdir -p /usr/local/etc \
48
+ && { \
49
+ echo 'gem: --no-document'; \
50
+ echo 'install: --no-document'; \
51
+ echo 'update: --no-document'; \
52
+ } >> /usr/local/etc/gemrc && \
53
+ echo 'gem: --no-document' >> ~/.gemrc
54
+
55
+ ########################################
56
+ # Update and install all default gems
57
+ # Correct issue with fileutils
58
+ ########################################
59
+ RUN gem uninstall --all --ignore-dependencies --executables && gem cleanup && \
60
+ gem update --system --no-document && gem update --no-document && \
61
+ gem uninstall fileutils; gem update fileutils --default
62
+
63
+ ########################################
64
+ # Setup user, application, and directory stuff
65
+ ########################################
66
+ RUN addgroup -S $APP_GROUP && \
67
+ adduser -h $APP_HOME -s /bin/bash -D -G $APP_GROUP $APP_USER && \
68
+ mkdir -p $APP_HOME && \
69
+ chown -R $APP_USER:$APP_USER $APP_HOME
70
+
71
+ ########################################
72
+ # Application / Install gems
73
+ ########################################
74
+ WORKDIR $APP_HOME
75
+ COPY . $APP_HOME
76
+ RUN chown -R $APP_USER:$APP_USER $APP_HOME
77
+ USER $APP_USER
78
+ # Install and compile the applications assets
79
+ RUN bundle config set without 'test' && \
80
+ bundle config set clean true && \
81
+ bundle install --jobs ${BUNDLE_JOBS} --retry ${BUNDLE_RETRY} --quiet && \
82
+ <%- unless options[:skip_javascript] -%>
83
+ yarn check --silent >/dev/null 2>&1 || yarn install --frozen-lockfile; yarn cache clean && \
84
+ <%- end -%>
85
+ rails assets:precompile<%= dockerfile_migration_snip(options[:database]) -%>
86
+
87
+ HEALTHCHECK CMD curl --fail "http://$(/bin/hostname -i | /usr/bin/awk '{ print $1 }'):${PORT:-3000}" || exit 1
88
+ # ########################################
89
+ # # Dockerfile EntryPoint commands
90
+ # ########################################
91
+ ENTRYPOINT ["/usr/bin/dumb-init", "--"]
92
+ CMD ["bundle", "exec", "rails", "server", "-p", "3000", "-b", "0.0.0.0"]
@@ -0,0 +1,133 @@
1
+ FROM node:12-slim as node
2
+ FROM ruby:<%= RUBY_VERSION %>-slim
3
+
4
+ ########################################
5
+ # Set Environment variables
6
+ ########################################
7
+ # If a RAILS_MASTER_KEY is used to encrypt credentails within the container
8
+ # ARG RAILS_MASTER_KEY
9
+ # ENV RAILS_MASTER_KEY=$RAILS_MASTER_KEY
10
+ ARG RAILS_ENV="development"
11
+ ENV DEBIAN_FRONTEND noninteractive
12
+ ENV PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/app/bin:$PATH"
13
+ <%= dockerfile_database_args unless options[:database] == 'sqlite3' -%>
14
+ ENV APP_USER='app' \
15
+ APP_GROUP='app' \
16
+ APP_HOME='/app' \
17
+ BUNDLE_PATH="vendor/cache" \
18
+ BUNDLE_JOBS=4 \
19
+ BUNDLE_RETRY=3 \
20
+ RAILS_ENV=$RAILS_ENV \
21
+ MALLOC_ARENA_MAX=2
22
+ # MALLOC_ARENA_MAX used to improve memory GC cycle performance
23
+ # https://github.com/prestodb/presto/issues/8993
24
+ # https://github.com/heroku/heroku-buildpack-ruby/issues/751
25
+ # https://www.speedshop.co/2017/12/04/malloc-doubles-ruby-memory.html
26
+
27
+
28
+ ########################################
29
+ # Basic application requirements
30
+ # => Update all packages before install required packages
31
+ # => Install essential header libraries
32
+ ########################################
33
+ RUN apt-get update 2>/dev/null && \
34
+ apt-get install -qq --no-install-recommends apt-utils 2>/dev/null && \
35
+ apt-get upgrade -qq && apt-get -qq dist-upgrade 2>/dev/null && \
36
+ apt-get install -qq build-essential apt-transport-https ca-certificates 2>/dev/null && \
37
+ <%= debian_docker_dependencies(options) -%>
38
+ apt-get autoremove -qq && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
39
+ truncate -s 0 /var/log/*log
40
+ # ==> Added jemalloc to run Ruby/Rails applications without malloc (to reduce memory consumption and allow faster memory allocation)
41
+ ENV LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libjemalloc.so'
42
+ # LD_PRELOAD is where the system can find the Jemalloc library
43
+
44
+ <%- unless options[:database] == 'sqlite3' && options[:skip_sidekiq] -%>
45
+ # Dockerize is used to prevent the application container from dieing (because other services haven't finished starting yet)
46
+ # => This is because some of the database containers have an initialization time and will cause your application to fail if it tries to create the application database before mysql has loaded
47
+ ENV DOCKERIZE_VERSION v0.6.1
48
+ RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz && \
49
+ tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz && \
50
+ rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
51
+ <%- end -%>
52
+
53
+ # Used as an init system to prevent zombie processes as the containers cycle or a process ends
54
+ ADD https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_amd64 /usr/local/bin/dumb-init
55
+ RUN chmod +x /usr/local/bin/dumb-init
56
+
57
+ <%- if %w[oracle sqlserver].include? options[:database] -%>
58
+ ########################################
59
+ # Databases
60
+ ########################################
61
+ <%- if options[:database] == 'oracle' %>
62
+ # https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
63
+ ENV INSTANT_CLIENT_SHORT_VERSION="19.6"
64
+ ENV INSTANT_CLIENT_LONG_VERSION="19.6.0.0.0"
65
+ ENV INSTANT_CLIENT_PATH="$APP_HOME/oracle"
66
+ ENV PATH="/usr/lib/oracle/$INSTANT_CLIENT_SHORT_VERSION/client64/bin:${PATH}"
67
+ ENV ORACLE_HOME="/usr/lib/oracle/$INSTANT_CLIENT_SHORT_VERSION/client64" \
68
+ OCI_LIB="/usr/lib/oracle/$INSTANT_CLIENT_SHORT_VERSION/client64/lib" \
69
+ TNS_ADMIN="/usr/lib/oracle/$INSTANT_CLIENT_SHORT_VERSION/client64/network/admin" \
70
+ LD_LIBRARY_PATH="/usr/lib/oracle/$INSTANT_CLIENT_SHORT_VERSION/client64/lib"
71
+ ENV INSTANT_CLIENT_BASIC_PATH="$INSTANT_CLIENT_PATH/oracle-instantclient$INSTANT_CLIENT_SHORT_VERSION-basic-$INSTANT_CLIENT_LONG_VERSION-1.x86_64.rpm"
72
+ ENV INSTANT_CLIENT_DEVEL_PATH="$INSTANT_CLIENT_PATH/oracle-instantclient$INSTANT_CLIENT_SHORT_VERSION-devel-$INSTANT_CLIENT_LONG_VERSION-1.x86_64.rpm"
73
+ ENV INSTANT_CLIENT_SQLPLUS_PATH="$INSTANT_CLIENT_PATH/oracle-instantclient$INSTANT_CLIENT_SHORT_VERSION-sqlplus-$INSTANT_CLIENT_LONG_VERSION-1.x86_64.rpm"
74
+ # Download required Oracle cli clients and enable them for usage with our application
75
+ RUN mkdir -p $INSTANT_CLIENT_PATH && \
76
+ wget -q https://download.oracle.com/otn_software/linux/instantclient/19600/oracle-instantclient$INSTANT_CLIENT_SHORT_VERSION-basic-$INSTANT_CLIENT_LONG_VERSION-1.x86_64.rpm --no-check-certificate -O $INSTANT_CLIENT_BASIC_PATH && \
77
+ wget -q https://download.oracle.com/otn_software/linux/instantclient/19600/oracle-instantclient$INSTANT_CLIENT_SHORT_VERSION-devel-$INSTANT_CLIENT_LONG_VERSION-1.x86_64.rpm --no-check-certificate -O $INSTANT_CLIENT_DEVEL_PATH && \
78
+ wget -q https://download.oracle.com/otn_software/linux/instantclient/19600/oracle-instantclient$INSTANT_CLIENT_SHORT_VERSION-sqlplus-$INSTANT_CLIENT_LONG_VERSION-1.x86_64.rpm --no-check-certificate -O $INSTANT_CLIENT_SQLPLUS_PATH && \
79
+ alien -i $INSTANT_CLIENT_BASIC_PATH 2>/dev/null && \
80
+ alien -i $INSTANT_CLIENT_DEVEL_PATH 2>/dev/null && \
81
+ alien -i $INSTANT_CLIENT_SQLPLUS_PATH 2>/dev/null && \
82
+ ldconfig
83
+ <%- elsif options[:database] == 'sqlserver' -%>
84
+ RUN wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.00.27.tar.gz && \
85
+ tar -xzf freetds-1.00.27.tar.gz && \
86
+ rm -rf freetds-1.00.27.tar.gz && \
87
+ cd freetds-1.00.27 && \
88
+ ./configure --prefix=/usr/local --with-tdsver=7.3 --silent >/dev/null 2>&1 && \
89
+ make -j "$(nproc)" >/dev/null 2>&1 && \
90
+ make install >/dev/null 2>&1 && \
91
+ ldconfig
92
+ <%- end -%>
93
+ <%- end -%>
94
+
95
+ ########################################
96
+ # NODE (required for numerous Rails components, especially compiling webpacker)
97
+ ########################################
98
+ COPY --from=node /usr/local/bin/node /usr/local/bin/node
99
+ COPY --from=node /usr/local/lib/node_modules /usr/local/lib/node_modules
100
+ COPY --from=node /usr/local/bin/npm /usr/local/bin/npm
101
+ COPY --from=node /opt/yarn-* /opt/yarn
102
+ RUN ln -s /opt/yarn/bin/yarn /usr/local/bin/yarn && \
103
+ ln -s /opt/yarn/bin/yarnpkg /usr/local/bin/yarnpkg && \
104
+ mkdir -p /tmp/src /opt
105
+ ENV PATH="/opt/yarn/bin:${PATH}"
106
+
107
+ ########################################
108
+ # APPUSER
109
+ ########################################
110
+ RUN useradd -m -u 1000 -U $APP_USER && \
111
+ mkdir -p $APP_HOME && \
112
+ chown $APP_USER:$APP_USER $APP_HOME && \
113
+ gem update --no-document && gem update --system --no-document
114
+
115
+ ########################################
116
+ # Application / Install gems
117
+ ########################################
118
+ WORKDIR $APP_HOME
119
+ COPY . $APP_HOME
120
+ RUN chown -R $APP_USER:$APP_USER $APP_HOME
121
+ USER $APP_USER
122
+ # RUN set -ex && bundle check || bundle install --jobs ${BUNDLE_JOBS} --retry ${BUNDLE_RETRY} --quiet --without test
123
+ RUN bundle config set without 'test' && \
124
+ bundle config set clean true && \
125
+ set -ex && bundle check || bundle install --jobs ${BUNDLE_JOBS} --retry ${BUNDLE_RETRY} --quiet && bundle clean && \
126
+ <%- unless options[:skip_javascript] -%>
127
+ bin/yarn install --check-files && \
128
+ <%- end -%>
129
+ rails assets:precompile<%= dockerfile_migration_snip(options[:database]) -%>
130
+
131
+ HEALTHCHECK CMD curl --fail "http://$(/bin/hostname -i | /usr/bin/awk '{ print $1 }'):${PORT:-3000}" || exit 1
132
+ ENTRYPOINT ["/usr/local/bin/dumb-init", "--"]
133
+ CMD ["bundle", "exec", "rails","server", "-p", "3000", "-b", "0.0.0.0"]
@@ -0,0 +1,55 @@
1
+ version: '3.7'
2
+
3
+ # https://docs.docker.com/compose/compose-file/#extension-fields
4
+ x-app_base: &x-app_base
5
+ # tty: true
6
+ stdin_open: true
7
+ env_file: .env
8
+ restart: always
9
+ networks:
10
+ - internal_network
11
+ - external_network
12
+ environment:
13
+ <%= docker_variables(options) %>
14
+ # RAILS_MASTER_KEY: ${RAILS_MASTER_KEY:-<%= SecureRandom.hex(16).force_encoding(Encoding::US_ASCII) %>}
15
+ volumes:
16
+ <%= app_volumes(options[:skip_javascript], 4) %>
17
+ <%= docker_depends_on(database: options[:database], skip_sidekiq: options[:skip_sidekiq], indention: 4, spaces: 2) -%>
18
+
19
+ services:
20
+ <%- if %w[mysql oracle postgresql sqlserver].include? options[:database] -%>
21
+ <%= docker_databases(options[:database]) %>
22
+ <%- end -%>
23
+ base: &base
24
+ <<: *x-app_base
25
+ build:
26
+ context: .
27
+ container_name: <%= app_name %>
28
+ command: >
29
+ sh -c "rm -rf /app/tmp/pids/server.pid /app/.local >/dev/null 2>&1"
30
+
31
+ web:
32
+ <<: *x-app_base
33
+ container_name: <%= app_name %>_web
34
+ image: <%= app_name %>_base:latest
35
+ command: >
36
+ sh -c "<%= docker_app_command(options[:database], options[:skip_sidekiq]) -%>"
37
+ ports:
38
+ - 3000:3000
39
+ healthcheck:
40
+ test: ["CMD", "http", "GET", "localhost:3000"]
41
+ <%= docker_depends_on(database: options[:database], skip_sidekiq: options[:skip_sidekiq], indention: 6, spaces: 4, requires_base: true) -%>
42
+
43
+ <%- unless options[:skip_sidekiq] -%>
44
+ <%= docker_redis_service %>
45
+ <%= docker_sidekiq_service(options[:database]) %>
46
+ <%- end -%>
47
+ <%= docker_webpacker_service(options) unless options[:skip_javascript] -%>
48
+
49
+ networks:
50
+ external_network:
51
+ internal_network:
52
+ internal: true
53
+ volumes:
54
+ app:
55
+ <%= docker_volumes(options) -%>
@@ -0,0 +1,15 @@
1
+ FROM mysql:5.7
2
+ ENV MYSQL_ROOT_PASSWORD="<%= SecureRandom.hex(16).force_encoding(Encoding::US_ASCII) %>"
3
+
4
+ RUN echo "\n"\
5
+ "CREATE DATABASE IF NOT EXISTS \`<%= app_name %>_development\`;\n"\
6
+ "CREATE DATABASE IF NOT EXISTS \`<%= app_name %>_production\`;\n"\
7
+ "CREATE DATABASE IF NOT EXISTS \`<%= app_name %>_staging\`;\n"\
8
+ "CREATE DATABASE IF NOT EXISTS \`<%= app_name %>_test\`;\n"\
9
+ "CREATE USER '${DB_USER}'@'%' IDENTIFIED BY '${DB_PASSWORD}';\n"\
10
+ "GRANT ALL ON \`<%= app_name %>_development\`.* TO '${DB_USER}'@'%';\n"\
11
+ "GRANT ALL ON \`<%= app_name %>_production\`.* TO '${DB_USER}'@'%';\n"\
12
+ "GRANT ALL ON \`<%= app_name %>_staging\`.* TO '${DB_USER}'@'%';\n"\
13
+ "GRANT ALL ON \`<%= app_name %>_test\`.* TO '${DB_USER}'@'%';\n"\
14
+ "FLUSH PRIVILEGES;"\
15
+ >> /docker-entrypoint-initdb.d/prepare_rails_db.sql
@@ -0,0 +1,34 @@
1
+ # Dependencies may vary dependent upon the project
2
+ apt-transport-https
3
+ apt-utils
4
+ build-essential
5
+ ca-certificates
6
+ autogen
7
+ autoconf
8
+ cmake
9
+ libtool
10
+ make
11
+ curl
12
+ wget
13
+ git
14
+ nodejs
15
+ yarn
16
+ graphviz
17
+ sqlite3
18
+ libsqlite3-dev
19
+ libc6-dev
20
+ libpq-dev
21
+ libjemalloc-dev
22
+ # Brotli is used for to compress assets smaller than gzip can (webpacker)
23
+ brotli
24
+ <%- if options[:encrypt] %>
25
+ # https://github.com/crypto-rb/rbnacl/wiki/Installing-libsodium
26
+ libsodium18
27
+ <%- end -%>
28
+ # Used for running background jobs
29
+ redis-server
30
+
31
+ # Image Processing
32
+ libvips
33
+ # If you don't want to use vips, you can also use imagemagick
34
+ # imagemagick
@@ -0,0 +1,49 @@
1
+ # Install development dependencies on Mac OS X using Homebrew (http://mxcl.github.com/homebrew)
2
+
3
+ # Misc dependencies you should already have (required for building and compiling dependencies)
4
+ brew 'autogen'
5
+ brew 'autoconf'
6
+ brew 'cmake'
7
+ brew 'libtool'
8
+ brew 'make'
9
+
10
+ # You should already have git installed; ensure that it is the latest version
11
+ brew 'git'
12
+
13
+ # To improve Ruby memory allocation performance
14
+ brew 'jemalloc'
15
+
16
+ # Used for assets and stuff
17
+ brew 'node'
18
+ brew 'yarn'
19
+ # If you plan to use sidekiq or run any background jobs
20
+ # brew 'redis'
21
+ cask 'chromedriver'
22
+
23
+ <%- unless options[:skip_erd] -%>
24
+ # Used generate the applications database ERD
25
+ brew 'graphviz'
26
+ <%- end -%>
27
+
28
+ # For processing images with ActionText/ActiveStorage, sidekiq, etc.
29
+ brew 'vips'
30
+ # If you want to use imagemagick instead
31
+ brew 'imagemagick'
32
+
33
+ <%- if options[:encrypt] -%>
34
+ # Used to encrypt Personal Identifiable information in the database (GDPR Compliance)
35
+ brew 'libsodium'
36
+ <%- end -%>
37
+
38
+ # Database clients
39
+ <%- case options[:database] -%>
40
+ <%- when 'oracle' -%>
41
+ brew 'instantclient-basic'
42
+ brew 'instantclient-sdk'
43
+ <%- when 'sqlserver' -%>
44
+ brew 'freetds'
45
+ <%- when 'postgresql' -%>
46
+ brew 'postgresql'
47
+ <%- else -%>
48
+ <%- end -%>
49
+ brew 'sqlite'
@@ -0,0 +1,12 @@
1
+ web: env bundle exec rails s -u puma -b 0.0.0.0 -p 3000
2
+ <%- unless options[:skip_sidekiq] -%>
3
+ # If background jobs are required
4
+ # redis: redis-server /usr/local/etc/redis.conf
5
+ <%- if config[:env] == 'development' -%>
6
+ redis: redis-server --port 6379
7
+ <%- end -%>
8
+ sidekiq: env bundle exec sidekiq -C ./config/sidekiq.yml
9
+ <%- end -%>
10
+ <%- if !options[:skip_javascript] && (config[:env] == 'development') -%>
11
+ webpack: WEBPACKER_DEV_SERVER_HOST=0.0.0.0 bundle exec ./bin/webpack-dev-server
12
+ <%- end -%>
@@ -0,0 +1,76 @@
1
+ # https://docs.codeclimate.com/docs/
2
+ version: "2"
3
+ checks:
4
+ argument-count:
5
+ enabled: false
6
+ complex-logic:
7
+ enabled: false
8
+ file-lines:
9
+ enabled: false
10
+ method-complexity:
11
+ enabled: false
12
+ method-count:
13
+ enabled: false
14
+ method-lines:
15
+ enabled: false
16
+ nested-control-flow:
17
+ enabled: false
18
+ return-statements:
19
+ enabled: false
20
+ similar-code:
21
+ enabled: false
22
+ identical-code:
23
+ enabled: false
24
+ plugins:
25
+ brakeman:
26
+ enabled: true
27
+ bundler-audit:
28
+ enabled: true
29
+ coffeelint:
30
+ enabled: false
31
+ config: coffeelint.json
32
+ duplication:
33
+ enabled: false
34
+ config:
35
+ languages:
36
+ - ruby
37
+ - javascript
38
+ exclude_paths:
39
+ - spec/
40
+ - test/
41
+ eslint:
42
+ enabled: true
43
+ channel: eslint-4
44
+ fixme:
45
+ enabled: true
46
+ rubocop:
47
+ enabled: true
48
+ channel: rubocop-0-81
49
+ config:
50
+ file: .rubocop.yml
51
+ scss-lint:
52
+ enabled: true
53
+ exclude_patterns:
54
+ - .bundle
55
+ - .idea/
56
+ - Aptfile
57
+ - Brewfile
58
+ - Gemfile
59
+ - bin/
60
+ - config/
61
+ - coverage/
62
+ - db/
63
+ - docs/
64
+ - log/
65
+ - node_modules/
66
+ - public/
67
+ - README.md
68
+ - script/
69
+ - spec/
70
+ - storage/
71
+ - test/
72
+ - tmp/
73
+ - vendor/
74
+ - vendor/asset
75
+ - '*.md'
76
+ - '*.yml'
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "@mcmath/coffeelint-config",
3
+ "indentation": {
4
+ "level": "error",
5
+ "value": 2
6
+ },
7
+ "max_line_length": {
8
+ "level": "ignore"
9
+ }
10
+ }
@@ -0,0 +1,15 @@
1
+ bin/
2
+ config/
3
+ coverage/
4
+ db/
5
+ node_modules/
6
+ public/
7
+ lib/
8
+ log/
9
+ node_modules/
10
+ public/
11
+ spec/
12
+ storage/
13
+ test/
14
+ tmp/
15
+ vendor/
@@ -0,0 +1,23 @@
1
+ .bundle
2
+ .idea
3
+ .local
4
+ .project
5
+ .vscode
6
+ .DS_Store
7
+ bak
8
+ coverage/
9
+ db/local_oracle
10
+ db/*.sqlite3
11
+ docs
12
+ log/*
13
+ public/assets
14
+ public/packs
15
+ public/system
16
+ node_modules
17
+ storage/
18
+ tmp/*
19
+ vendor/bundle
20
+ vendor/cache
21
+ **/**.bak
22
+ *~
23
+ *.swp
@@ -0,0 +1,13 @@
1
+ # EditorConfig is awesome: https://EditorConfig.org
2
+
3
+ # top-most EditorConfig file
4
+ root = true
5
+
6
+ # Unix-style newlines with a newline ending every file
7
+ [*]
8
+ charset = utf-8
9
+ end_of_line = lf
10
+ insert_final_newline = true
11
+ indent_style = space
12
+ indent_size = 2
13
+ trim_trailing_whitespace = true
@@ -0,0 +1,58 @@
1
+ ########################################
2
+ # Application Specific
3
+ ########################################
4
+ <%- if options[:encrypt] -%>
5
+ LOCKBOX_MASTER_KEY=<%= SecureRandom.hex(32).force_encoding(Encoding::US_ASCII) %>
6
+ <%- end -%>
7
+ DISABLE_SPRING=1
8
+ DB_POOL=5
9
+ RAILS_ENV=<%= config[:env] != 'docker' ? config[:env] : 'development' %>
10
+ RAILS_LOG_TO_STDOUT=true
11
+ # Used by Puma, sidekiq, and caching for number of running threads
12
+ RAILS_MAX_THREADS=5
13
+ RAILS_SERVE_STATIC_FILES=true
14
+
15
+ <%- if options[:database] != 'sqlite3' -%>
16
+ ########################################
17
+ # Database Configuration
18
+ ########################################
19
+ <%= dotfile_databases(options[:database], config[:env]) -%>
20
+ <%- end -%>
21
+
22
+ ########################################
23
+ # Mailer
24
+ ########################################
25
+ <%- unless options[:skip_mailers] -%>
26
+ # If redis-server is not running on localhost it needs to be assigned
27
+ # By default this is set in config/application.rb && config/initializers/sidekiq.rb
28
+ # => They will fallback to redis://localhost:6379/0 if the ENV variable is not set
29
+ # => If running through docker-compose this should be set in the compose file
30
+ # REDIS_URL=redis://localhost:6379/0
31
+ # Address in which emails will be sent "from"
32
+ DEFAULT_EMAIL=noreply@example.com
33
+ <%- if options[:mailer] == 'postmark' -%>
34
+ POSTMARK_API_TOKEN=<%= SecureRandom.hex(16).force_encoding(Encoding::US_ASCII) %>
35
+ <%- else -%>
36
+ SPARKPOST_API_KEY=<%= SecureRandom.hex(16).force_encoding(Encoding::US_ASCII) %>
37
+ <%- end -%>
38
+ <%- end -%>
39
+
40
+ <%- unless options[:skip_javascript] -%>
41
+ ########################################
42
+ # Javascript/Webpack
43
+ ########################################
44
+ <%- if %w[staging production].include? config[:env] -%>
45
+ # Node.js
46
+ NODE_ENV=production
47
+ <%- end -%>
48
+ # So RAILS won't try to compile webpacker assets
49
+ # WEBPACKER_DEV_SERVER_HOST=webpack
50
+ WEBPACKER_DEV_SERVER_HOST=0.0.0.0
51
+ <%- end -%>
52
+
53
+ ########################################
54
+ # Analytics and Exception logging
55
+ ########################################
56
+ # Google analytics
57
+ # GOOGLE_ANALYTICS=UA-XXXXXXXX-X
58
+ HONEYBADGER_API_KEY=<%= SecureRandom.hex(16).force_encoding(Encoding::US_ASCII) %>
@@ -0,0 +1,10 @@
1
+ ---
2
+ linters:
3
+ ErbSafety:
4
+ enabled: true
5
+ better_html_config: .better-html.yml
6
+ Rubocop:
7
+ enabled: true
8
+ rubocop_config:
9
+ inherit_from:
10
+ - .rubocop.yml