devise-security 0.13.0 → 0.14.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -1
  3. data/.gitignore +1 -0
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +30 -12
  6. data/Appraisals +21 -5
  7. data/Gemfile +8 -1
  8. data/README.md +47 -7
  9. data/app/views/devise/paranoid_verification_code/show.html.erb +1 -1
  10. data/app/views/devise/password_expired/show.html.erb +1 -1
  11. data/config/locales/de.yml +11 -11
  12. data/config/locales/fr.yml +13 -13
  13. data/config/locales/ja.yml +29 -0
  14. data/devise-security.gemspec +12 -6
  15. data/gemfiles/rails_4.2_stable.gemfile +9 -1
  16. data/gemfiles/rails_5.0_stable.gemfile +8 -1
  17. data/gemfiles/rails_5.1_stable.gemfile +8 -1
  18. data/gemfiles/{rails_5.2.0.gemfile → rails_5.2_stable.gemfile} +8 -1
  19. data/gemfiles/rails_6.0_beta.gemfile +15 -0
  20. data/lib/devise-security.rb +2 -4
  21. data/lib/devise-security/models/{old_password.rb → active_record/old_password.rb} +1 -2
  22. data/lib/devise-security/models/compatibility.rb +6 -15
  23. data/lib/devise-security/models/compatibility/active_record.rb +29 -0
  24. data/lib/devise-security/models/compatibility/mongoid.rb +21 -0
  25. data/lib/devise-security/models/database_authenticatable_patch.rb +1 -1
  26. data/lib/devise-security/models/expirable.rb +6 -2
  27. data/lib/devise-security/models/mongoid/old_password.rb +21 -0
  28. data/lib/devise-security/models/password_archivable.rb +16 -7
  29. data/lib/devise-security/models/password_expirable.rb +5 -0
  30. data/lib/devise-security/models/secure_validatable.rb +2 -2
  31. data/lib/devise-security/orm/mongoid.rb +7 -0
  32. data/lib/devise-security/patches/controller_security_question.rb +1 -1
  33. data/lib/devise-security/version.rb +1 -1
  34. data/lib/generators/devise_security/install_generator.rb +1 -1
  35. data/test/dummy/app/models/application_record.rb +8 -2
  36. data/test/dummy/app/models/application_user_record.rb +11 -0
  37. data/test/dummy/app/models/captcha_user.rb +5 -2
  38. data/test/dummy/app/models/mongoid/confirmable_fields.rb +13 -0
  39. data/test/dummy/app/models/mongoid/database_authenticable_fields.rb +17 -0
  40. data/test/dummy/app/models/mongoid/expirable_fields.rb +11 -0
  41. data/test/dummy/app/models/mongoid/lockable_fields.rb +13 -0
  42. data/test/dummy/app/models/mongoid/mappings.rb +13 -0
  43. data/test/dummy/app/models/mongoid/omniauthable_fields.rb +11 -0
  44. data/test/dummy/app/models/mongoid/paranoid_verification_fields.rb +10 -0
  45. data/test/dummy/app/models/mongoid/password_archivable_fields.rb +9 -0
  46. data/test/dummy/app/models/mongoid/password_expirable_fields.rb +10 -0
  47. data/test/dummy/app/models/mongoid/recoverable_fields.rb +11 -0
  48. data/test/dummy/app/models/mongoid/registerable_fields.rb +19 -0
  49. data/test/dummy/app/models/mongoid/rememberable_fields.rb +10 -0
  50. data/test/dummy/app/models/mongoid/secure_validatable_fields.rb +11 -0
  51. data/test/dummy/app/models/mongoid/security_questionable_fields.rb +13 -0
  52. data/test/dummy/app/models/mongoid/session_limitable_fields.rb +10 -0
  53. data/test/dummy/app/models/mongoid/timeoutable_fields.rb +9 -0
  54. data/test/dummy/app/models/mongoid/trackable_fields.rb +14 -0
  55. data/test/dummy/app/models/mongoid/validatable_fields.rb +7 -0
  56. data/test/dummy/app/models/secure_user.rb +5 -1
  57. data/test/dummy/app/models/security_question_user.rb +7 -4
  58. data/test/dummy/app/models/user.rb +5 -0
  59. data/test/dummy/app/models/widget.rb +4 -0
  60. data/test/dummy/app/mongoid/admin.rb +31 -0
  61. data/test/dummy/app/mongoid/one_user.rb +58 -0
  62. data/test/dummy/app/mongoid/shim.rb +25 -0
  63. data/test/dummy/app/mongoid/user_on_engine.rb +41 -0
  64. data/test/dummy/app/mongoid/user_on_main_app.rb +41 -0
  65. data/test/dummy/app/mongoid/user_with_validations.rb +37 -0
  66. data/test/dummy/app/mongoid/user_without_email.rb +35 -0
  67. data/test/dummy/config/application.rb +10 -7
  68. data/test/dummy/config/environments/test.rb +2 -2
  69. data/test/dummy/config/initializers/devise.rb +3 -4
  70. data/test/dummy/config/initializers/migration_class.rb +8 -6
  71. data/test/dummy/config/mongoid.yml +6 -0
  72. data/test/dummy/lib/shared_expirable_columns.rb +14 -0
  73. data/test/dummy/lib/shared_security_questions_fields.rb +16 -0
  74. data/test/dummy/lib/shared_user.rb +32 -0
  75. data/test/dummy/lib/shared_user_with_password_verification.rb +13 -0
  76. data/test/dummy/lib/shared_user_without_email.rb +28 -0
  77. data/test/dummy/lib/shared_user_without_omniauth.rb +15 -0
  78. data/test/dummy/lib/shared_verification_fields.rb +15 -0
  79. data/test/orm/active_record.rb +12 -0
  80. data/test/orm/mongoid.rb +12 -0
  81. data/test/support/mongoid.yml +6 -0
  82. data/test/test_helper.rb +16 -9
  83. data/test/test_install_generator.rb +1 -0
  84. data/test/test_password_archivable.rb +6 -7
  85. data/test/test_password_expirable.rb +3 -1
  86. data/test/test_secure_validatable.rb +11 -10
  87. data/test/test_security_question_controller.rb +9 -11
  88. metadata +125 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85c4ba49803f532f05e0068cb2c2277385945e50af8afc92afd7fc2d11952872
4
- data.tar.gz: 5267a9c636fe9dd641f1743e0d21d36a925c89878b91fb9c04e922a04719cd00
3
+ metadata.gz: 7c4792b4c6cfb7669e27f8a7e10e07120a775e6df6e49684a58d0739c037455f
4
+ data.tar.gz: 9680c97a0e97e21f8e3c7c731be1b75ca3b9d32d43992069204707f91a8bbc82
5
5
  SHA512:
6
- metadata.gz: d0155aafc0542df604d7c5f9c4041cb61b845942e321b818af1d0295196ab964ba1ef180061d6c2b2268091d6a47289e97bc6762fe6af6f0c5c4a32e1e4a9769
7
- data.tar.gz: 958fac64a85c9cd791146c832d8a586b0c2a14ae0e561a828bef4766a97002910d033d84854b206e28d7ebb2c13a7b6e416044ccdcefb16afdff541a059e1500
6
+ metadata.gz: 6c4a5e3d4770a85b291591fb97251b44643b2f7a777e91eccd188ef17695acc6de6cd42dd05ffb8a21b6b4ea08ae70e583df2c7533424e35bb77c132740cbaad
7
+ data.tar.gz: a865684ed344f4f543b29217a6cd2ce0e62ef523de6953f4a8e5f41631b69943d8a38df0a2ce6b7a2a13fc6119c15aecdf1d65e95ef838fdd7769c78bfe91353
@@ -43,7 +43,7 @@ checks:
43
43
  plugins:
44
44
  rubocop:
45
45
  enabled: true
46
- channel: rubocop-0-58
46
+ channel: rubocop-0-59
47
47
  markdownlint:
48
48
  enabled: true
49
49
  brakeman:
data/.gitignore CHANGED
@@ -40,3 +40,4 @@ Gemfile.lock
40
40
  *.lock
41
41
  bin/*
42
42
  .yardoc
43
+ .idea
@@ -1 +1 @@
1
- 2.3.7
1
+ 2.3
@@ -1,23 +1,41 @@
1
1
  language: ruby
2
- before_install: gem install bundler && bundle -v
3
- install: bundle install --jobs=3 --retry=3
4
- before_script: bundle install
2
+ dist: xenial
3
+ before_install:
4
+ # install bundler < 2 because Rails 4.2 is incompatible with bundler >= 2
5
+ - gem install bundler -v '1.17.3'
6
+ install: bundle _1.17.3_ install --jobs=2 --retry=2 --path=${BUNDLE_PATH:-vendor/bundle}
7
+ cache: bundler
5
8
  script: bundle exec rake
6
9
  rvm:
7
- - 2.3.7
8
- - 2.4.4
9
- - 2.5.1
10
+ - 2.3
11
+ - 2.4
12
+ - 2.5
13
+ - 2.6
10
14
  - ruby-head
15
+ env:
16
+ matrix:
17
+ - DEVISE_ORM=active_record
18
+ - DEVISE_ORM=mongoid
19
+ services:
20
+ - mongodb
11
21
  matrix:
12
- allow_failures:
13
- - rvm: ruby-head
14
- - gemfile: gemfiles/rails_5.2_rc1.gemfile
15
- - rvm: 2.4.4
22
+ exclude:
23
+ # Skip these combinations because they have incompatible dependencies
24
+ # and will always fail.
25
+ - rvm: 2.6
16
26
  gemfile: gemfiles/rails_4.2_stable.gemfile
17
- - rvm: 2.5.1
27
+ - rvm: ruby-head
18
28
  gemfile: gemfiles/rails_4.2_stable.gemfile
29
+ - rvm: 2.3
30
+ gemfile: gemfiles/rails_6.0_beta.gemfile
31
+ - rvm: 2.4
32
+ gemfile: gemfiles/rails_6.0_beta.gemfile
33
+ allow_failures:
34
+ - rvm: ruby-head
35
+ - gemfile: gemfiles/rails_6.0_beta.gemfile
19
36
  gemfile:
20
37
  - gemfiles/rails_4.2_stable.gemfile
21
38
  - gemfiles/rails_5.0_stable.gemfile
22
39
  - gemfiles/rails_5.1_stable.gemfile
23
- - gemfiles/rails_5.2.0.gemfile
40
+ - gemfiles/rails_5.2_stable.gemfile
41
+ - gemfiles/rails_6.0_beta.gemfile
data/Appraisals CHANGED
@@ -1,19 +1,35 @@
1
- appraise 'rails-4.1-stable' do
2
- gem 'rails', '~> 4.1.0'
3
- end
4
-
5
1
  appraise 'rails-4.2-stable' do
6
2
  gem 'rails', '~> 4.2.0'
3
+ gem 'bundler', '< 2'
4
+ group :mongoid do
5
+ gem "mongoid", "~> 4.0"
6
+ end
7
7
  end
8
8
 
9
9
  appraise 'rails-5.0-stable' do
10
10
  gem 'rails', '~> 5.0.0'
11
+ group :mongoid do
12
+ gem "mongoid", "~> 6.0"
13
+ end
11
14
  end
12
15
 
13
16
  appraise 'rails-5.1-stable' do
14
17
  gem 'rails', '~> 5.1.0'
18
+ group :mongoid do
19
+ gem "mongoid", "~> 6.0"
20
+ end
15
21
  end
16
22
 
17
- appraise 'rails-5.2.0' do
23
+ appraise 'rails-5.2-stable' do
18
24
  gem 'rails', '~> 5.2.0'
25
+ group :mongoid do
26
+ gem "mongoid", "~> 6.0"
27
+ end
28
+ end
29
+
30
+ appraise 'rails-6.0-beta' do
31
+ gem 'rails', '~> 6.0.0.beta1'
32
+ group :mongoid do
33
+ gem "mongoid", "~> 6.0"
34
+ end
19
35
  end
data/Gemfile CHANGED
@@ -1,3 +1,10 @@
1
1
  source "https://rubygems.org"
2
2
  gemspec
3
- gem 'omniauth'
3
+
4
+ group :active_record do
5
+ gem 'sqlite3', '~> 1.3.0'
6
+ end
7
+
8
+ group :mongoid do
9
+ gem 'mongoid'
10
+ end
data/README.md CHANGED
@@ -104,6 +104,37 @@ Devise.setup do |config|
104
104
  end
105
105
  ```
106
106
 
107
+ ## Other ORMs
108
+
109
+ Devise-security supports [Mongoid](https://rubygems.org/gems/mongoid) as an alternative ORM to active_record. To use this ORM, add this to your `Gemfile`.
110
+
111
+ gem 'mongoid'
112
+
113
+ And then ensure that the environment variable `DEVISE_ORM=mongoid` is set.
114
+
115
+ For local development you will need to have MongoDB installed locally.
116
+
117
+ brew install mongodb
118
+
119
+ ### Rails App setup example with Mongoid
120
+
121
+ ```ruby
122
+ # inside config/application.rb
123
+ require File.expand_path('../boot', __FILE__)
124
+ #...
125
+ DEVISE_ORM=:mongoid
126
+
127
+ # Require the gems listed in Gemfile, including any gems
128
+ # you've limited to :test, :development, or :production.
129
+ Bundler.require(*Rails.groups)
130
+
131
+ module MyApp
132
+ class Application < Rails::Application
133
+ #...
134
+ end
135
+ end
136
+ ```
137
+
107
138
  ## Captcha-Support
108
139
 
109
140
  The captcha support depends on [EasyCaptcha](https://github.com/phatworx/easy_captcha). See further documentation there.
@@ -132,8 +163,6 @@ rails generate easy_captcha:install
132
163
 
133
164
  ## Schema
134
165
 
135
- Note: Unlike Devise, devise-security does not currently support mongoid. Pull requests are welcome!
136
-
137
166
  ### Password expirable
138
167
 
139
168
  ```ruby
@@ -242,11 +271,13 @@ end
242
271
 
243
272
  ## Requirements
244
273
 
245
- - Devise (<https://github.com/plataformatec/devise>)
246
- - Rails 4.2 onwards (<http://github.com/rails/rails>)
247
- - recommendations:
248
- - `autocomplete-off` (<http://github.com/phatworx/autocomplete-off>)
249
- - `easy_captcha` (<http://github.com/phatworx/easy_captcha>)
274
+ * Devise (<https://github.com/plataformatec/devise>)
275
+ * Rails 4.2 onwards (<http://github.com/rails/rails>)
276
+ * recommendations:
277
+ - `autocomplete-off` (<http://github.com/phatworx/autocomplete-off>)
278
+ - `easy_captcha` (<http://github.com/phatworx/easy_captcha>)
279
+ - `mongodb` (<https://www.mongodb.com/>)
280
+ - `rvm` (<https://rvm.io/>)
250
281
 
251
282
  ## Todo
252
283
 
@@ -282,6 +313,15 @@ See also [Github Releases](https://github.com/devise-security/devise-security/re
282
313
  - Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
283
314
  - Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
284
315
 
316
+ ## Running tests
317
+
318
+ Standard tests can be invoked using `rake`. To run the tests against the `mongoid` ORM, use `DEVISE_ORM=mongoid rake` while `mongodb` is running.
319
+
320
+ To locally simulate what travis-ci will run when you push code use:
321
+
322
+ $ gem install bundler -v '1.17.3'
323
+ $ BUNDLER_VERSION=1.17.3 wwtd
324
+
285
325
  ## Copyright
286
326
 
287
327
  Copyright (c) 2011-2017 Marco Scholl. See LICENSE.txt for further details.
@@ -1,7 +1,7 @@
1
1
  <h2>Submit verification code</h2>
2
2
 
3
3
  <%= form_for(resource, as: resource_name, url: [resource_name, :paranoid_verification_code], html: { method: :put }) do |f| %>
4
- <%= devise_error_messages! %>
4
+ <%= render partial: 'devise/shared/error_messages' %>
5
5
 
6
6
  <p><%= f.label :paranoid_verification_code, 'Verification code' %><br />
7
7
  <%= f.text_field :paranoid_verification_code, value: '' %></p>
@@ -1,7 +1,7 @@
1
1
  <h2>Renew your password</h2>
2
2
 
3
3
  <%= form_for(resource, as: resource_name, url: [resource_name, :password_expired], html: { method: :put }) do |f| %>
4
- <%= devise_error_messages! %>
4
+ <%= render partial: 'devise/shared/error_messages' %>
5
5
 
6
6
  <p><%= f.label :current_password, 'Current password' %><br />
7
7
  <%= f.password_field :current_password %></p>
@@ -1,28 +1,28 @@
1
1
  de:
2
2
  errors:
3
3
  messages:
4
- taken_in_past: 'wurde bereits in der Vergangenheit verwendet!'
5
- equal_to_current_password: 'darf nicht dem aktuellen Passwort entsprechen!'
4
+ taken_in_past: 'wurde bereits in der Vergangenheit verwendet.'
5
+ equal_to_current_password: 'darf nicht dem aktuellen Passwort entsprechen.'
6
6
  password_complexity:
7
7
  digit:
8
- one: muss mindestens eine Nummer enthalten
9
- other: muss mindestens %{count} Zahlen enthalten
8
+ one: muss mindestens eine Ziffer enthalten
9
+ other: muss mindestens %{count} Ziffern enthalten
10
10
  lower:
11
- one: muss mindestens eine Kleinbuchstabe enthalten
11
+ one: muss mindestens einen Kleinbuchstaben enthalten
12
12
  other: muss mindestens %{count} Kleinbuchstaben enthalten
13
13
  symbol:
14
- one: muss mindestens eine Satzzeichen enthalten
14
+ one: muss mindestens ein Satzzeichen enthalten
15
15
  other: muss mindestens %{count} Satzzeichen enthalten
16
16
  upper:
17
- one: muss mindestens eine Großbuchstabe enthalten
17
+ one: muss mindestens einen Großbuchstaben enthalten
18
18
  other: muss mindestens %{count} Großbuchstaben enthalten
19
19
  devise:
20
- invalid_captcha: 'Die Captchaeingabe ist nicht gültig!'
20
+ invalid_captcha: 'Die Captcha-Eingabe ist nicht gültig.'
21
21
  paranoid_verify:
22
- code_required: 'Bitte geben Sie den Code unser Support-Team zur Verfügung gestellt'
22
+ code_required: 'Bitte geben Sie den Code ein, den unser Support-Team zur Verfügung gestellt hat.'
23
23
  password_expired:
24
24
  updated: 'Das neue Passwort wurde übernommen.'
25
- change_required: 'Ihr Passwort ist abgelaufen. Bitte vergeben sie ein neues Passwort!'
25
+ change_required: 'Ihr Passwort ist abgelaufen. Bitte vergeben Sie ein neues Passwort.'
26
26
  failure:
27
27
  session_limited: 'Ihre Anmeldedaten wurden in einem anderen Browser genutzt. Bitte melden Sie sich erneut an, um in diesem Browser fortzufahren.'
28
- expired: 'Ihr Account ist aufgrund zu langer Inaktiviät abgelaufen. Bitte kontaktieren Sie den Administrator.'
28
+ expired: 'Ihr Account ist aufgrund zu langer Inaktivität abgelaufen. Bitte kontaktieren Sie den Administrator.'
@@ -1,29 +1,29 @@
1
1
  fr:
2
2
  errors:
3
3
  messages:
4
- taken_in_past: a été utilisé trop récemment - s'il vous plaît, choisissez un autre
5
- equal_to_current_password: doit être différent du l'actuel
4
+ taken_in_past: a été utilisé trop récemment. Veuillez en choisir un autre
5
+ equal_to_current_password: doit être différent de l'actuel
6
6
  password_complexity:
7
7
  digit:
8
- one: doit containir en moins d'un chiffre
9
- other: doit containir en moins de %{count} chiffres
8
+ one: doit contenir au moins un chiffre
9
+ other: doit contenir au moins %{count} chiffres
10
10
  lower:
11
- one: doit containir en moins d'un miniscule
12
- other: doit containir en moins de %{count} miniscules
11
+ one: doit contenir au moins une lettre miniscule
12
+ other: doit contenir au moins %{count} lettres miniscules
13
13
  symbol:
14
- one: doit containir en moins d'un signe de ponctuation
15
- other: doit containir en moins de %{count} signes de ponctuation
14
+ one: doit contenir au moins un signe de ponctuation
15
+ other: doit contenir au moins %{count} signes de ponctuation
16
16
  upper:
17
- one: doit containir en moins d'un majuscule
18
- other: doit containir en moins de %{count} majuscules
17
+ one: doit contenir au moins une lettre majuscule
18
+ other: doit contenir au moins %{count} lettres majuscules
19
19
  devise:
20
20
  invalid_captcha: Le captcha n'est pas valide
21
- invalid_security_question: La réponse à la question de sécurité était invalide
21
+ invalid_security_question: La réponse à la question de sécurité est invalide
22
22
  paranoid_verify:
23
23
  code_required: Veuillez entrer le code fourni par notre équipe de support
24
24
  password_expired:
25
25
  updated: Votre nouveau mot de passe est enregistré
26
- change_required: Votre mot de passe a expiré - s'il vous plaît, choisissez un autre
26
+ change_required: Votre mot de passe a expiré. Veuillez en choisir un autre
27
27
  failure:
28
28
  session_limited: Vos identifiants de connexion ont été utilisés dans un autre navigateur. Veuillez vous reconnecter pour continuer dans ce navigateur
29
- expired: Votre compte a expiré en raison de l'inactivité. Veuillez contacter l'administrateur du site
29
+ expired: Votre compte a expiré pour cause d'inactivité. Veuillez contacter l'administrateur du site
@@ -0,0 +1,29 @@
1
+ ja:
2
+ errors:
3
+ messages:
4
+ taken_in_past: 'は既に使われています。'
5
+ equal_to_current_password: 'は現在のパスワードと異なるものである必要があります。'
6
+ password_complexity:
7
+ digit:
8
+ one: は最低1つの数字を含む必要があります。
9
+ other: は最低%{count}つの数字を含む必要があります。
10
+ lower:
11
+ one: は最低1つの小文字英字を含む必要があります。
12
+ other: は最低%{count}つの小文字英字を含む必要があります。
13
+ symbol:
14
+ one: は最低1つの記号を含む必要があります。
15
+ other: は最低%{count}つの記号を含む必要があります。
16
+ upper:
17
+ one: は最低1つの大文字英字を含む必要があります。
18
+ other: は最低%{count}つの大文字英字を含む必要があります。
19
+ devise:
20
+ invalid_captcha: 'キャプチャ入力が不正です。'
21
+ invalid_security_question: 'セキュリティ質問に対すつ回答が不正です。'
22
+ paranoid_verify:
23
+ code_required: 'サポートチームに提供された認証コードを入力してください。'
24
+ password_expired:
25
+ updated: '新しいパスワードが保存されました。'
26
+ change_required: 'パスワードが期限切れです。パスワードを新しく設定してください。'
27
+ failure:
28
+ session_limited: '他のブラウザでログインされました。このブラウザで続ける場合は、もう一度サインインしてください。'
29
+ expired: '活動がなかったため、あなたのアカウントは期限切れとなりました。サイト管理者に連絡してください。'
@@ -14,31 +14,37 @@ Gem::Specification.new do |s|
14
14
  s.homepage = 'https://github.com/devise-security/devise-security'
15
15
  s.description = 'An enterprise security extension for devise.'
16
16
  s.authors = [
17
- 'Marco Scholl', 'Alexander Dreher', 'Nate Bird', 'Dillon Welch'
17
+ 'Marco Scholl',
18
+ 'Alexander Dreher',
19
+ 'Nate Bird',
20
+ 'Dillon Welch',
21
+ 'Kevin Olbrich'
18
22
  ]
19
23
 
20
24
  s.files = `git ls-files`.split("\n")
21
25
  s.test_files = `git ls-files -- test/*`.split("\n")
22
26
  s.require_paths = ['lib']
23
- s.required_ruby_version = '>= 2.3.7'
27
+ s.required_ruby_version = '>= 2.3.0'
24
28
 
25
29
  if RUBY_VERSION >= '2.4'
26
- s.add_runtime_dependency 'rails', '>= 4.2.0', '< 6.0'
30
+ s.add_runtime_dependency 'rails', '>= 4.2.0', '< 7.0'
27
31
  else
28
32
  s.add_runtime_dependency 'railties', '>= 4.2.0', '< 6.0'
29
33
  end
30
- s.add_runtime_dependency 'devise', '>= 4.2.0', '< 5.0'
34
+ s.add_runtime_dependency 'devise', '>= 4.3.0', '< 5.0'
31
35
 
32
36
  s.add_development_dependency 'appraisal'
33
37
  s.add_development_dependency 'bundler'
34
38
  s.add_development_dependency 'coveralls'
39
+ s.add_development_dependency 'database_cleaner'
35
40
  s.add_development_dependency 'easy_captcha'
36
41
  s.add_development_dependency 'm'
37
42
  s.add_development_dependency 'minitest'
43
+ s.add_development_dependency 'omniauth'
38
44
  s.add_development_dependency 'pry-byebug'
39
45
  s.add_development_dependency 'pry-rescue'
40
- s.add_development_dependency 'pry'
41
46
  s.add_development_dependency 'rails_email_validator'
42
- s.add_development_dependency 'rubocop', '~> 0.58.0'
47
+ s.add_development_dependency 'rubocop', '~> 0.59.2'
43
48
  s.add_development_dependency 'sqlite3'
49
+ s.add_development_dependency 'wwtd'
44
50
  end
@@ -2,7 +2,15 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "omniauth"
6
5
  gem "rails", "~> 4.2.0"
6
+ gem "bundler", "< 2"
7
+
8
+ group :active_record do
9
+ gem "sqlite3", "~> 1.3.0"
10
+ end
11
+
12
+ group :mongoid do
13
+ gem "mongoid", "~> 4.0"
14
+ end
7
15
 
8
16
  gemspec path: "../"
@@ -2,7 +2,14 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "omniauth"
6
5
  gem "rails", "~> 5.0.0"
7
6
 
7
+ group :active_record do
8
+ gem "sqlite3", "~> 1.3.0"
9
+ end
10
+
11
+ group :mongoid do
12
+ gem "mongoid", "~> 6.0"
13
+ end
14
+
8
15
  gemspec path: "../"
@@ -2,7 +2,14 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "omniauth"
6
5
  gem "rails", "~> 5.1.0"
7
6
 
7
+ group :active_record do
8
+ gem "sqlite3", "~> 1.3.0"
9
+ end
10
+
11
+ group :mongoid do
12
+ gem "mongoid", "~> 6.0"
13
+ end
14
+
8
15
  gemspec path: "../"