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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +1 -1
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/.travis.yml +30 -12
- data/Appraisals +21 -5
- data/Gemfile +8 -1
- data/README.md +47 -7
- data/app/views/devise/paranoid_verification_code/show.html.erb +1 -1
- data/app/views/devise/password_expired/show.html.erb +1 -1
- data/config/locales/de.yml +11 -11
- data/config/locales/fr.yml +13 -13
- data/config/locales/ja.yml +29 -0
- data/devise-security.gemspec +12 -6
- data/gemfiles/rails_4.2_stable.gemfile +9 -1
- data/gemfiles/rails_5.0_stable.gemfile +8 -1
- data/gemfiles/rails_5.1_stable.gemfile +8 -1
- data/gemfiles/{rails_5.2.0.gemfile → rails_5.2_stable.gemfile} +8 -1
- data/gemfiles/rails_6.0_beta.gemfile +15 -0
- data/lib/devise-security.rb +2 -4
- data/lib/devise-security/models/{old_password.rb → active_record/old_password.rb} +1 -2
- data/lib/devise-security/models/compatibility.rb +6 -15
- data/lib/devise-security/models/compatibility/active_record.rb +29 -0
- data/lib/devise-security/models/compatibility/mongoid.rb +21 -0
- data/lib/devise-security/models/database_authenticatable_patch.rb +1 -1
- data/lib/devise-security/models/expirable.rb +6 -2
- data/lib/devise-security/models/mongoid/old_password.rb +21 -0
- data/lib/devise-security/models/password_archivable.rb +16 -7
- data/lib/devise-security/models/password_expirable.rb +5 -0
- data/lib/devise-security/models/secure_validatable.rb +2 -2
- data/lib/devise-security/orm/mongoid.rb +7 -0
- data/lib/devise-security/patches/controller_security_question.rb +1 -1
- data/lib/devise-security/version.rb +1 -1
- data/lib/generators/devise_security/install_generator.rb +1 -1
- data/test/dummy/app/models/application_record.rb +8 -2
- data/test/dummy/app/models/application_user_record.rb +11 -0
- data/test/dummy/app/models/captcha_user.rb +5 -2
- data/test/dummy/app/models/mongoid/confirmable_fields.rb +13 -0
- data/test/dummy/app/models/mongoid/database_authenticable_fields.rb +17 -0
- data/test/dummy/app/models/mongoid/expirable_fields.rb +11 -0
- data/test/dummy/app/models/mongoid/lockable_fields.rb +13 -0
- data/test/dummy/app/models/mongoid/mappings.rb +13 -0
- data/test/dummy/app/models/mongoid/omniauthable_fields.rb +11 -0
- data/test/dummy/app/models/mongoid/paranoid_verification_fields.rb +10 -0
- data/test/dummy/app/models/mongoid/password_archivable_fields.rb +9 -0
- data/test/dummy/app/models/mongoid/password_expirable_fields.rb +10 -0
- data/test/dummy/app/models/mongoid/recoverable_fields.rb +11 -0
- data/test/dummy/app/models/mongoid/registerable_fields.rb +19 -0
- data/test/dummy/app/models/mongoid/rememberable_fields.rb +10 -0
- data/test/dummy/app/models/mongoid/secure_validatable_fields.rb +11 -0
- data/test/dummy/app/models/mongoid/security_questionable_fields.rb +13 -0
- data/test/dummy/app/models/mongoid/session_limitable_fields.rb +10 -0
- data/test/dummy/app/models/mongoid/timeoutable_fields.rb +9 -0
- data/test/dummy/app/models/mongoid/trackable_fields.rb +14 -0
- data/test/dummy/app/models/mongoid/validatable_fields.rb +7 -0
- data/test/dummy/app/models/secure_user.rb +5 -1
- data/test/dummy/app/models/security_question_user.rb +7 -4
- data/test/dummy/app/models/user.rb +5 -0
- data/test/dummy/app/models/widget.rb +4 -0
- data/test/dummy/app/mongoid/admin.rb +31 -0
- data/test/dummy/app/mongoid/one_user.rb +58 -0
- data/test/dummy/app/mongoid/shim.rb +25 -0
- data/test/dummy/app/mongoid/user_on_engine.rb +41 -0
- data/test/dummy/app/mongoid/user_on_main_app.rb +41 -0
- data/test/dummy/app/mongoid/user_with_validations.rb +37 -0
- data/test/dummy/app/mongoid/user_without_email.rb +35 -0
- data/test/dummy/config/application.rb +10 -7
- data/test/dummy/config/environments/test.rb +2 -2
- data/test/dummy/config/initializers/devise.rb +3 -4
- data/test/dummy/config/initializers/migration_class.rb +8 -6
- data/test/dummy/config/mongoid.yml +6 -0
- data/test/dummy/lib/shared_expirable_columns.rb +14 -0
- data/test/dummy/lib/shared_security_questions_fields.rb +16 -0
- data/test/dummy/lib/shared_user.rb +32 -0
- data/test/dummy/lib/shared_user_with_password_verification.rb +13 -0
- data/test/dummy/lib/shared_user_without_email.rb +28 -0
- data/test/dummy/lib/shared_user_without_omniauth.rb +15 -0
- data/test/dummy/lib/shared_verification_fields.rb +15 -0
- data/test/orm/active_record.rb +12 -0
- data/test/orm/mongoid.rb +12 -0
- data/test/support/mongoid.yml +6 -0
- data/test/test_helper.rb +16 -9
- data/test/test_install_generator.rb +1 -0
- data/test/test_password_archivable.rb +6 -7
- data/test/test_password_expirable.rb +3 -1
- data/test/test_secure_validatable.rb +11 -10
- data/test/test_security_question_controller.rb +9 -11
- metadata +125 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c4792b4c6cfb7669e27f8a7e10e07120a775e6df6e49684a58d0739c037455f
|
4
|
+
data.tar.gz: 9680c97a0e97e21f8e3c7c731be1b75ca3b9d32d43992069204707f91a8bbc82
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c4a5e3d4770a85b291591fb97251b44643b2f7a777e91eccd188ef17695acc6de6cd42dd05ffb8a21b6b4ea08ae70e583df2c7533424e35bb77c132740cbaad
|
7
|
+
data.tar.gz: a865684ed344f4f543b29217a6cd2ce0e62ef523de6953f4a8e5f41631b69943d8a38df0a2ce6b7a2a13fc6119c15aecdf1d65e95ef838fdd7769c78bfe91353
|
data/.codeclimate.yml
CHANGED
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3
|
1
|
+
2.3
|
data/.travis.yml
CHANGED
@@ -1,23 +1,41 @@
|
|
1
1
|
language: ruby
|
2
|
-
|
3
|
-
|
4
|
-
|
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
|
8
|
-
- 2.4
|
9
|
-
- 2.5
|
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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- rvm: 2.
|
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:
|
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.
|
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
|
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
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
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
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
|
-
<%=
|
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
|
-
<%=
|
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>
|
data/config/locales/de.yml
CHANGED
@@ -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
|
9
|
-
other: muss mindestens %{count}
|
8
|
+
one: muss mindestens eine Ziffer enthalten
|
9
|
+
other: muss mindestens %{count} Ziffern enthalten
|
10
10
|
lower:
|
11
|
-
one: muss mindestens
|
11
|
+
one: muss mindestens einen Kleinbuchstaben enthalten
|
12
12
|
other: muss mindestens %{count} Kleinbuchstaben enthalten
|
13
13
|
symbol:
|
14
|
-
one: muss mindestens
|
14
|
+
one: muss mindestens ein Satzzeichen enthalten
|
15
15
|
other: muss mindestens %{count} Satzzeichen enthalten
|
16
16
|
upper:
|
17
|
-
one: muss mindestens
|
17
|
+
one: muss mindestens einen Großbuchstaben enthalten
|
18
18
|
other: muss mindestens %{count} Großbuchstaben enthalten
|
19
19
|
devise:
|
20
|
-
invalid_captcha: 'Die
|
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
|
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
|
28
|
+
expired: 'Ihr Account ist aufgrund zu langer Inaktivität abgelaufen. Bitte kontaktieren Sie den Administrator.'
|
data/config/locales/fr.yml
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
fr:
|
2
2
|
errors:
|
3
3
|
messages:
|
4
|
-
taken_in_past: a été utilisé trop récemment
|
5
|
-
equal_to_current_password: doit être différent
|
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
|
9
|
-
other: doit
|
8
|
+
one: doit contenir au moins un chiffre
|
9
|
+
other: doit contenir au moins %{count} chiffres
|
10
10
|
lower:
|
11
|
-
one: doit
|
12
|
-
other: doit
|
11
|
+
one: doit contenir au moins une lettre miniscule
|
12
|
+
other: doit contenir au moins %{count} lettres miniscules
|
13
13
|
symbol:
|
14
|
-
one: doit
|
15
|
-
other: doit
|
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
|
18
|
-
other: doit
|
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é
|
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
|
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é
|
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: '活動がなかったため、あなたのアカウントは期限切れとなりました。サイト管理者に連絡してください。'
|
data/devise-security.gemspec
CHANGED
@@ -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',
|
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.
|
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', '<
|
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.
|
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.
|
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
|