kowl 0.0.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 (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,17 @@
1
+ h2 = title('Welcome')
2
+ p.lead
3
+ | Lorem ipsum dolor sit amet, consectetur adipiscing elit.
4
+ | Mauris maximus vulputate gravida.
5
+ | Integer eget mauris at orci molestie porta.
6
+
7
+ p
8
+ | In scelerisque leo vitae lacus commodo, eu tincidunt nisi suscipit.
9
+ | Pellentesque at sapien duiDuis sit amet arcu non ante sodales varius.
10
+ | Fusce nibh nulla, mollis a dolor eu, iaculis pharetra lectus.
11
+ | Sed turpis quam, imperdiet ut faucibus sit amet, efficitur ut nulla.
12
+ | Duis non accumsan lacus.
13
+ | Vestibulum nec diam quis dui convallis rhoncus quis sit amet massa.
14
+ | Maecenas ac est purus. Aliquam erat volutpat.
15
+ | Vestibulum tempus pharetra viverra.
16
+ | Etiam vestibulum et elit in vulputate.
17
+ | Quisque eget elementum purus, id volutpat augue.
@@ -0,0 +1,20 @@
1
+ <section>
2
+ <h2><%= title('Weclome') %></h2>
3
+ <p>
4
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
5
+ Mauris maximus vulputate gravida.
6
+ Integer eget mauris at orci molestie porta.
7
+ </p>
8
+ <p>
9
+ In scelerisque leo vitae lacus commodo, eu tincidunt nisi suscipit.
10
+ Pellentesque at sapien duiDuis sit amet arcu non ante sodales varius.
11
+ Fusce nibh nulla, mollis a dolor eu, iaculis pharetra lectus.
12
+ Sed turpis quam, imperdiet ut faucibus sit amet, efficitur ut nulla.
13
+ Duis non accumsan lacus.
14
+ Vestibulum nec diam quis dui convallis rhoncus quis sit amet massa.
15
+ Maecenas ac est purus. Aliquam erat volutpat.
16
+ Vestibulum tempus pharetra viverra.
17
+ Etiam vestibulum et elit in vulputate.
18
+ Quisque eget elementum purus, id volutpat augue.
19
+ </p>
20
+ </section>
@@ -0,0 +1,17 @@
1
+ %section
2
+ %h2= title('Weclome')
3
+ %p
4
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
5
+ Mauris maximus vulputate gravida.
6
+ Integer eget mauris at orci molestie porta.
7
+ %p
8
+ In scelerisque leo vitae lacus commodo, eu tincidunt nisi suscipit.
9
+ Pellentesque at sapien duiDuis sit amet arcu non ante sodales varius.
10
+ Fusce nibh nulla, mollis a dolor eu, iaculis pharetra lectus.
11
+ Sed turpis quam, imperdiet ut faucibus sit amet, efficitur ut nulla.
12
+ Duis non accumsan lacus.
13
+ Vestibulum nec diam quis dui convallis rhoncus quis sit amet massa.
14
+ Maecenas ac est purus. Aliquam erat volutpat.
15
+ Vestibulum tempus pharetra viverra.
16
+ Etiam vestibulum et elit in vulputate.
17
+ Quisque eget elementum purus, id volutpat augue.
@@ -0,0 +1,17 @@
1
+ section
2
+ h2 = title('Weclome')
3
+ p
4
+ | Lorem ipsum dolor sit amet, consectetur adipiscing elit.
5
+ | Mauris maximus vulputate gravida.
6
+ | Integer eget mauris at orci molestie porta.
7
+ p
8
+ | In scelerisque leo vitae lacus commodo, eu tincidunt nisi suscipit.
9
+ | Pellentesque at sapien duiDuis sit amet arcu non ante sodales varius.
10
+ | Fusce nibh nulla, mollis a dolor eu, iaculis pharetra lectus.
11
+ | Sed turpis quam, imperdiet ut faucibus sit amet, efficitur ut nulla.
12
+ | Duis non accumsan lacus.
13
+ | Vestibulum nec diam quis dui convallis rhoncus quis sit amet massa.
14
+ | Maecenas ac est purus. Aliquam erat volutpat.
15
+ | Vestibulum tempus pharetra viverra.
16
+ | Etiam vestibulum et elit in vulputate.
17
+ | Quisque eget elementum purus, id volutpat augue.
@@ -0,0 +1,5 @@
1
+ <footer class="footer">
2
+ <div class="container-fluid">
3
+ <span class="text-muted"><%= app_name.titleize %> &copy; <%= Date.current.strftime('%Y') %></span>
4
+ </div>
5
+ </footer>
@@ -0,0 +1,3 @@
1
+ %footer.footer
2
+ .container-fluid
3
+ %span.text-muted <%= app_name.titleize %> &copy; <%= Date.current.strftime('%Y') %>
@@ -0,0 +1,3 @@
1
+ footer.footer
2
+ .container-fluid
3
+ span.text-muted <%= app_name.titleize %> &copy; <%= Date.current.strftime('%Y') %>
@@ -0,0 +1,7 @@
1
+ <div class="ui vertical footer segment">
2
+ <div class="ui center aligned container">
3
+ <div class="ui horizontal small divided link list">
4
+ <strong><%= app_name.titleize %></strong> &copy; <%= Date.current.strftime('%Y') %>
5
+ </div>
6
+ </div>
7
+ </div>
@@ -0,0 +1,5 @@
1
+ .ui.vertical.footer.segment
2
+ .ui.center.aligned.container
3
+ .ui.horizontal.small.divided.link.list
4
+ %strong <%= app_name.titleize %>
5
+ | &copy; <%= Date.current.strftime('%Y') %>
@@ -0,0 +1,5 @@
1
+ .ui.vertical.footer.segment
2
+ .ui.center.aligned.container
3
+ .ui.horizontal.small.divided.link.list
4
+ strong <%= app_name.titleize %>
5
+ | &copy; <%= Date.current.strftime('%Y') %>
@@ -0,0 +1,51 @@
1
+ <nav class="navbar navbar-expand-lg navbar-light bg-light">
2
+ <%%= link_to '/', class: 'navbar-brand' do %><%= app_name.titleize %><%% end %>
3
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
4
+ <span class="navbar-toggler-icon"></span>
5
+ </button>
6
+ <div class="collapse navbar-collapse" id="navbarNav">
7
+ <ul class="navbar-nav">
8
+ <li class="nav-item active">
9
+ <a class="nav-link" href="/">Home <span class="sr-only">(current)</span></a>
10
+ </li>
11
+ <li class="nav-item">
12
+ <a class="nav-link" href="#">Features</a>
13
+ </li>
14
+ <li class="nav-item">
15
+ <a class="nav-link" href="#">Pricing</a>
16
+ </li>
17
+ <li class="nav-item">
18
+ <a class="nav-link disabled" href="#">Disabled</a>
19
+ </li>
20
+ </ul>
21
+
22
+ <%- unless options[:noauth] -%>
23
+ <ul class="nav navbar-nav ml-auto">
24
+ <%%- if user_signed_in? %>
25
+ <%%- if current_user.staff_member? %>
26
+ <li class="nav-item">
27
+ <%%= link_to 'admin', admin_root_path, class: 'nav-link' %>
28
+ </li>
29
+ <%% end %>
30
+ <li class="nav-item dropdown">
31
+ <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
32
+ <%%= current_user.email %>
33
+ </a>
34
+ <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
35
+ <%%= link_to "#{icon('fas', 'user-circle mr-1')} Edit Account".html_safe, edit_user_registration_path, class: 'dropdown-item' %>
36
+ <%%- if current_user != true_user %>
37
+ <%%= link_to stop_impersonating_users_path, method: :post, class: 'dropdown-item', title: 'Stop impersonating user' do %>
38
+ <%%== "#{icon('fas','theater-masks')} Stop Impersonating" %>
39
+ <%% end %>
40
+ <%%- end %>
41
+ <div class="dropdown-divider"></div>
42
+ <%%= link_to "#{icon('fas', 'sign-out-alt mr-1')} Logout".html_safe, destroy_user_session_path, method: :delete, class: 'dropdown-item' %>
43
+ </div>
44
+ </li>
45
+ <%%- else %>
46
+ <li><%%= link_to('Login', new_user_session_path, class: 'nav-item nav-link') %></li>
47
+ <%%- end %>
48
+ </ul>
49
+ <%- end -%>
50
+ </div>
51
+ </nav>
@@ -0,0 +1,36 @@
1
+ %nav.navbar.navbar-expand-lg.navbar-light.bg-light
2
+ = link_to '/', class: 'navbar-brand' do
3
+ = '<%= app_name.titleize %>'
4
+ %button.navbar-toggler{"aria-controls" => "navbarNav", "aria-expanded" => "false", "aria-label" => "Toggle navigation", "data-target" => "#navbarNav", "data-toggle" => "collapse", :type => "button"}
5
+ %span.navbar-toggler-icon
6
+ #navbarNav.collapse.navbar-collapse
7
+ %ul.navbar-nav
8
+ %li.nav-item.active
9
+ %a.nav-link{:href => "/"}
10
+ Home
11
+ %span.sr-only (current)
12
+ %li.nav-item
13
+ %a.nav-link{:href => "#"} Features
14
+ %li.nav-item
15
+ %a.nav-link{:href => "#"} Pricing
16
+ %li.nav-item
17
+ %a.nav-link.disabled{:href => "#"} Disabled
18
+ <%- unless options[:noauth] -%>
19
+ %ul.nav.navbar-nav.ml-auto
20
+ - if user_signed_in?
21
+ - if current_user.staff_member?
22
+ %li.nav-item
23
+ = link_to 'admin', admin_root_path, class: 'nav-link'
24
+ %li.nav-item.dropdown
25
+ %a#navbarDropdown.nav-link.dropdown-toggle{"aria-expanded" => "false", "aria-haspopup" => "true", "data-toggle" => "dropdown", :href => "#", :role => "button"}
26
+ = current_user.email
27
+ .dropdown-menu.dropdown-menu-right{"aria-labelledby" => "navbarDropdown"}
28
+ = link_to "#{icon('fas', 'user-circle mr-1')} Edit Account".html_safe, edit_user_registration_path, class: 'dropdown-item'
29
+ - if current_user != true_user
30
+ = link_to stop_impersonating_users_path, method: :post, class: 'dropdown-item', title: 'Stop impersonating user' do
31
+ == "#{icon('fas','theater-masks')} Stop Impersonating"
32
+ .dropdown-divider
33
+ = link_to "#{icon('fas', 'sign-out-alt mr-1')} Logout".html_safe, destroy_user_session_path, method: :delete, class: 'dropdown-item'
34
+ - else
35
+ %li= link_to('Login', new_user_session_path, class: 'nav-item nav-link')
36
+ <%- end -%>
@@ -0,0 +1,36 @@
1
+ nav.navbar.navbar-expand-lg.navbar-light.bg-light
2
+ = link_to '/', class: 'navbar-brand' do
3
+ = '<%= app_name.titleize %>'
4
+ button.navbar-toggler aria-controls="navbarNav" aria-expanded="false" aria-label=("Toggle navigation") data-target="#navbarNav" data-toggle="collapse" type="button"
5
+ span.navbar-toggler-icon
6
+ #navbarNav.collapse.navbar-collapse
7
+ ul.navbar-nav
8
+ li.nav-item.active
9
+ a.nav-link href="/"
10
+ | Home
11
+ span.sr-only (current)
12
+ li.nav-item
13
+ a.nav-link href="#" Features
14
+ li.nav-item
15
+ a.nav-link href="#" Pricing
16
+ li.nav-item
17
+ a.nav-link.disabled href="#" Disabled
18
+ <%- unless options[:noauth] -%>
19
+ ul.nav.navbar-nav.ml-auto
20
+ - if user_signed_in?
21
+ - if current_user.staff_member?
22
+ li.nav-item
23
+ = link_to 'admin', admin_root_path, class: 'nav-link'
24
+ li.nav-item.dropdown
25
+ a#navbarDropdown.nav-link.dropdown-toggle aria-expanded="false" aria-haspopup="true" data-toggle="dropdown" href="#" role="button"
26
+ = current_user.email
27
+ .dropdown-menu.dropdown-menu-right aria-labelledby="navbarDropdown"
28
+ = link_to "#{icon('fas', 'user-circle mr-1')} Edit Account".html_safe, edit_user_registration_path, class: 'dropdown-item'
29
+ - if current_user != true_user
30
+ = link_to stop_impersonating_users_path, method: :post, class: 'dropdown-item', title: 'Stop impersonating user' do
31
+ == "#{icon('fas','theater-masks')} Stop Impersonating"
32
+ .dropdown-divider
33
+ = link_to "#{icon('fas', 'sign-out-alt mr-1')} Logout".html_safe, destroy_user_session_path, method: :delete, class: 'dropdown-item'
34
+ - else
35
+ li= link_to('Login', new_user_session_path, class: 'nav-item nav-link')
36
+ <%- end -%>
@@ -0,0 +1,48 @@
1
+ <div class="ui fixed inverted menu">
2
+ <div class="menu">
3
+ <%%= link_to '/', class: 'header item' do %><%= app_name.titleize %><%%- end %>
4
+ <a href="/" class="item">Home</a>
5
+ <div class="ui simple dropdown item">
6
+ Dropdown <i class="dropdown icon"></i>
7
+ <div class="menu">
8
+ <a class="item" href="#">Link Item</a>
9
+ <a class="item" href="#">Link Item</a>
10
+ <div class="divider"></div>
11
+ <div class="header">Header Item</div>
12
+ <div class="item">
13
+ <i class="dropdown icon"></i>
14
+ Sub Menu
15
+ <div class="menu">
16
+ <a class="item" href="#">Link Item</a>
17
+ <a class="item" href="#">Link Item</a>
18
+ </div>
19
+ </div>
20
+ <a class="item" href="#">Link Item</a>
21
+ </div>
22
+ </div>
23
+ </div>
24
+ <%- unless options[:noauth] -%>
25
+ <div class="right menu">
26
+ <%% if user_signed_in? %>
27
+ <%%- if current_user.staff_member? %>
28
+ <%%= link_to 'admin', admin_root_path, class: 'item' %>
29
+ <%%- end -%>
30
+ <div class="ui simple dropdown item">
31
+ <span class="current_user"><%%= current_user.email %></span> <i class="dropdown icon"></i>
32
+ <div class="menu">
33
+ <%%= link_to "#{icon('fas', 'user-circle mr-1')} Edit Account".html_safe, edit_user_registration_path, class: 'item' %>
34
+ <%%- if current_user != true_user %>
35
+ <%%= link_to stop_impersonating_users_path, method: :post, class: 'item', title: 'Stop impersonating user' do %>
36
+ <%%== "#{icon('fas','theater-masks')} Stop Impersonating" %>
37
+ <%% end %>
38
+ <%%- end %>
39
+ <div class="divider"></div>
40
+ <%%= link_to "#{icon('fas', 'sign-out-alt mr-1')} Logout".html_safe, destroy_user_session_path, method: :delete, class: 'item' %>
41
+ </div>
42
+ </div>
43
+ <%% else %>
44
+ <%%= link_to('Login', new_user_session_path, class: 'item') %>
45
+ <%% end %>
46
+ </div>
47
+ <% end %>
48
+ </div>
@@ -0,0 +1,36 @@
1
+ .ui.fixed.inverted.menu
2
+ .menu
3
+ = link_to '<%= app_name.titleize %>', '/', class: 'header item'
4
+ %a.item{:href => "/"} Home
5
+ .ui.simple.dropdown.item
6
+ Dropdown
7
+ %i.dropdown.icon
8
+ .menu
9
+ %a.item{:href => "#"} Link Item
10
+ %a.item{:href => "#"} Link Item
11
+ .divider
12
+ .header Header Item
13
+ .item
14
+ %i.dropdown.icon Sub Menu
15
+ .menu
16
+ %a.item{:href => "#"} Link Item
17
+ %a.item{:href => "#"} Link Item
18
+ %a.item{:href => "#"} Link Item
19
+ <%- unless options[:noauth] -%>
20
+ .right.menu
21
+ - if user_signed_in?
22
+ - if current_user.staff_member?
23
+ = link_to 'admin', admin_root_path, class: 'item'
24
+ .ui.simple.dropdown.item
25
+ %span.current_user= current_user.email
26
+ %i.dropdown.icon
27
+ .menu
28
+ = link_to "#{icon('fas', 'user-circle mr-1')} Edit Account".html_safe, edit_user_registration_path, class: 'item'
29
+ - if current_user != true_user
30
+ = link_to stop_impersonating_users_path, method: :post, class: 'item', title: 'Stop impersonating user' do
31
+ == #{icon('fas','theater-masks')} Stop Impersonating
32
+ .divider
33
+ = link_to "#{icon('fas', 'sign-out-alt mr-1')} Logout".html_safe, destroy_user_session_path, method: :delete, class: 'item'
34
+ - else
35
+ = link_to('Login', new_user_session_path, class: 'item')
36
+ <%- end -%>
@@ -0,0 +1,36 @@
1
+ .ui.fixed.inverted.menu
2
+ .menu
3
+ = link_to '/', class: 'header item' do
4
+ = app_name.titleize
5
+ a.item href="/" Home
6
+ .ui.simple.dropdown.item Dropdown
7
+ i.dropdown.icon
8
+ .menu
9
+ a.item href="#" Link Item
10
+ a.item href="#" Link Item
11
+ .divider
12
+ .header Header Item
13
+ .item
14
+ i.dropdown.icon Sub Menu
15
+ .menu
16
+ a.item href="#" Link Item
17
+ a.item href="#" Link Item
18
+ a.item href="#" Link Item
19
+ <%- unless options[:noauth] %>
20
+ .right.menu
21
+ - if user_signed_in?
22
+ - if current_user.staff_member?
23
+ = link_to 'admin', admin_root_path, class: 'item'
24
+ .ui.simple.dropdown.item
25
+ span.current_user= current_user.email
26
+ i.dropdown.icon
27
+ .menu
28
+ = link_to "#{icon('fas', 'user-circle mr-1')} Edit Account".html_safe, edit_user_registration_path, class: 'item'
29
+ - if current_user != true_user
30
+ = link_to stop_impersonating_users_path, method: :post, class: 'item', title: 'Stop impersonating user' do
31
+ == "#{icon('fas','theater-masks')} Stop Impersonating"
32
+ .divider
33
+ = link_to "#{icon('fas', 'sign-out-alt mr-1')} Logout".html_safe, destroy_user_session_path, method: :delete, class: 'item'
34
+ - else
35
+ = link_to('Login', new_user_session_path, class: 'item')
36
+ <%- end -%>
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Scheduler::PgheroScheduler
4
+ include Sidekiq::Worker
5
+
6
+ sidekiq_options unique: :until_executed, retry: 0
7
+
8
+ def perform
9
+ PgHero.capture_space_stats
10
+ end
11
+ end
@@ -0,0 +1,4 @@
1
+ browsers:
2
+ - "> 1%"
3
+ - "last 2 versions"
4
+ - "IE > 8"
@@ -0,0 +1,43 @@
1
+ default: &default
2
+ adapter: mysql2
3
+ encoding: utf8mb4
4
+ collation: utf8mb4_bin
5
+ reconnect: false
6
+ pool: <%%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>
7
+ username: <%%= ENV.fetch('DB_USER') { 'root' } %>
8
+ password: <%%= ENV.fetch('DB_PASSWORD') { 'password' } %>
9
+ host: <%%= ENV.fetch('DB_HOST') { 'localhost' } %>
10
+ port: <%= ENV.fetch('DB_PORT') { '3306' } %>
11
+ <% if mysql_socket -%>
12
+ socket: <%= mysql_socket %>
13
+ <% end -%>
14
+
15
+ development:
16
+ <<: *default
17
+ database: <%= app_name %>_development
18
+
19
+ staging:
20
+ <<: *default
21
+ database: <%= app_name %>_staging
22
+
23
+ production:
24
+ <<: *default
25
+ database: <%= app_name %>_production
26
+ username: <%= app_name %>
27
+ password: <%%= ENV['<%= app_name.upcase %>_DATABASE_PASSWORD'] %>
28
+ # https://github.com/ankane/the-ultimate-guide-to-ruby-timeouts/#mysql
29
+ # If you're using maria chance this to (max_statement_time: 5)
30
+ connect_timeout: 1
31
+ read_timeout: 1
32
+ write_timeout: 1
33
+ checkout_timeout: 5
34
+ variables:
35
+ max_execution_time: 5000 # ms, for MySQL 5.7.8 or higher
36
+ max_statement_time: 5 # sec, for MariaDB 10.1.1 or higher
37
+
38
+ # Warning: The database defined as "test" will be erased and
39
+ # re-generated from your development database when you run "rake".
40
+ # Do not set this db to the same as development or production.
41
+ test:
42
+ <<: *default
43
+ database: <%= app_name %>_test
@@ -0,0 +1,29 @@
1
+ default: &default
2
+ adapter: oracle_enhanced
3
+ pool: <%%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>
4
+ timeout: 5000
5
+ username: <%%= ENV.fetch('DB_USER') { 'system' } %>
6
+ password: <%%= ENV.fetch('DB_PASSWORD') { 'oracle' } %>
7
+ host: <%%= ENV.fetch('DB_HOST') { 'localhost' } %>
8
+ database: <%%= ENV.fetch('DB_SID') { 'xe' } %>
9
+
10
+ development:
11
+ <<: *default
12
+ # database: <%= app_name %>_development
13
+
14
+ staging:
15
+ <<: *default
16
+ # database: <%= app_name %>_staging
17
+
18
+ production:
19
+ <<: *default
20
+ database: <%= app_name %>_production
21
+ username: <%= app_name %>
22
+ password: <%%= ENV['<%= app_name.upcase %>_DATABASE_PASSWORD'] %>
23
+
24
+ # Warning: The database defined as "test" will be erased and
25
+ # re-generated from your development database when you run "rake".
26
+ # Do not set this db to the same as development or production.
27
+ test:
28
+ <<: *default
29
+ database: <%= app_name %>_test
@@ -0,0 +1,37 @@
1
+ default: &default
2
+ adapter: postgresql
3
+ encoding: unicode
4
+ # For details on connection pooling, see Rails configuration guide
5
+ # https://guides.rubyonrails.org/configuring.html#database-pooling
6
+ pool: <%%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>
7
+ timeout: <%%= ENV.fetch('DB_TIMEOUT', 3).to_i.seconds %>
8
+ username: <%%= ENV.fetch('DB_USER') { 'postgres' } %>
9
+ password: <%%= ENV.fetch('DB_PASSWORD') { 'password' } %>
10
+ host: <%%= ENV.fetch('DB_HOST') { 'localhost' } %>
11
+
12
+ development:
13
+ <<: *default
14
+ database: <%= app_name %>_development
15
+
16
+ staging:
17
+ <<: *default
18
+ database: <%= app_name %>_staging
19
+
20
+ # if you use pgbounder you need to disable prepared_statements -> https://edgeguides.rubyonrails.org/configuring.html#configuring-a-postgresql-database
21
+ production:
22
+ <<: *default
23
+ database: <%= app_name %>_production
24
+ username: <%= app_name %>
25
+ password: <%%= ENV['<%= app_name.upcase %>_DATABASE_PASSWORD'] %>
26
+ # https://github.com/ankane/the-ultimate-guide-to-ruby-timeouts/#statement-timeouts-1
27
+ connect_timeout: 2
28
+ checkout_timeout: 5
29
+ variables:
30
+ statement_timeout: 5000
31
+
32
+ # Warning: The database defined as "test" will be erased and
33
+ # re-generated from your development database when you run "rake".
34
+ # Do not set this db to the same as development or production.
35
+ test:
36
+ <<: *default
37
+ database: <%= app_name %>_test
@@ -0,0 +1,20 @@
1
+ default: &default
2
+ adapter: sqlite3
3
+ pool: <%%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>
4
+ timeout: 5000
5
+
6
+ development:
7
+ <<: *default
8
+ database: db/development.sqlite3
9
+
10
+ staging:
11
+ <<: *default
12
+ database: db/staging.sqlite3
13
+
14
+ test:
15
+ <<: *default
16
+ database: db/test.sqlite3
17
+
18
+ production:
19
+ <<: *default
20
+ database: db/production.sqlite3
@@ -0,0 +1,28 @@
1
+ default: &default
2
+ adapter: sqlserver
3
+ encoding: utf8
4
+ username: <%%= ENV.fetch('DB_USER') { 'sa' } %>
5
+ password: <%%= ENV.fetch('DB_PASSWORD') { 'password' } %>
6
+ host: <%%= ENV.fetch('DB_HOST') { 'localhost' } %>
7
+
8
+ development:
9
+ <<: *default
10
+ database: <%= app_name %>_development
11
+
12
+ staging:
13
+ <<: *default
14
+ database: <%= app_name %>_staging
15
+
16
+
17
+ production:
18
+ <<: *default
19
+ database: <%= app_name %>_production
20
+ username: <%= app_name %>
21
+ password: <%%= ENV['<%= app_name.upcase %>_DATABASE_PASSWORD'] %>
22
+
23
+ # Warning: The database defined as "test" will be erased and
24
+ # re-generated from your development database when you run "rake".
25
+ # Do not set this db to the same as development or production.
26
+ test:
27
+ <<: *default
28
+ database: <%= app_name %>_test
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ if defined?(Administrate)
4
+ Rails.application.configure do
5
+ config.to_prepare do
6
+ Administrate::ApplicationController.helper <%= app_name.titleize %>::Application.helpers
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ if defined?(Bullet)
4
+ if Rails.env.development?
5
+ Rails.application.config.after_initialize do
6
+ Bullet.enable = true
7
+ Bullet.bullet_logger = true
8
+ Bullet.rails_logger = true
9
+ # Bullet.add_footer = true
10
+ Bullet.unused_eager_loading_enable = false
11
+ end
12
+ end
13
+
14
+ if Rails.env.test?
15
+ Rails.application.config.after_initialize do
16
+ Bullet.enable = true
17
+ Bullet.bullet_logger = true
18
+ Bullet.raise = true # raise an error if n+1 query occurs
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ Devise.setup do |config|
4
+ # ==> Security Extension
5
+ # Configure security extension for devise
6
+
7
+ # Should the password expire (e.g 3.months)
8
+ # config.expire_password_after = false
9
+
10
+ # Need 1 char of A-Z, a-z and 0-9
11
+ config.password_complexity = { digit: 1, lower: 1, symbol: 1, upper: 1 }
12
+
13
+ # How many passwords to keep in archive
14
+ # config.password_archiving_count = 5
15
+
16
+ # Deny old passwords (true, false, number_of_old_passwords_to_check)
17
+ # Examples:
18
+ # config.deny_old_passwords = false # allow old passwords
19
+ # config.deny_old_passwords = true # will deny all the old passwords
20
+ # config.deny_old_passwords = 3 # will deny new passwords that matches with the last 3 passwords
21
+ # config.deny_old_passwords = true
22
+
23
+ # enable email validation for :secure_validatable. (true, false, validation_options)
24
+ # dependency: see https://github.com/devise-security/devise-security/blob/master/README.md#e-mail-validation
25
+ config.email_validation = true
26
+
27
+ # captcha integration for recover form
28
+ # config.captcha_for_recover = true
29
+
30
+ # captcha integration for sign up form
31
+ # config.captcha_for_sign_up = true
32
+
33
+ # captcha integration for sign in form
34
+ # config.captcha_for_sign_in = true
35
+
36
+ # captcha integration for unlock form
37
+ # config.captcha_for_unlock = true
38
+
39
+ # captcha integration for confirmation form
40
+ # config.captcha_for_confirmation = true
41
+
42
+ # Time period for account expiry from last_activity_at
43
+ # config.expire_after = 90.days
44
+ end