devise 3.0.0 → 3.1.0

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.

Potentially problematic release.


This version of devise might be problematic. Click here for more details.

Files changed (68) hide show
  1. data/{CHANGELOG.rdoc → CHANGELOG.md} +67 -25
  2. data/Gemfile.lock +13 -12
  3. data/README.md +19 -17
  4. data/app/controllers/devise/confirmations_controller.rb +11 -3
  5. data/app/controllers/devise/registrations_controller.rb +9 -3
  6. data/app/controllers/devise/sessions_controller.rb +1 -1
  7. data/app/mailers/devise/mailer.rb +6 -3
  8. data/app/views/devise/mailer/confirmation_instructions.html.erb +1 -1
  9. data/app/views/devise/mailer/reset_password_instructions.html.erb +1 -1
  10. data/app/views/devise/mailer/unlock_instructions.html.erb +1 -1
  11. data/app/views/devise/shared/_links.erb +2 -2
  12. data/config/locales/en.yml +4 -3
  13. data/devise.gemspec +1 -0
  14. data/gemfiles/Gemfile.rails-3.2.x.lock +47 -44
  15. data/lib/devise/controllers/helpers.rb +1 -0
  16. data/lib/devise/controllers/rememberable.rb +1 -0
  17. data/lib/devise/hooks/csrf_cleaner.rb +5 -0
  18. data/lib/devise/hooks/lockable.rb +1 -1
  19. data/lib/devise/hooks/rememberable.rb +2 -1
  20. data/lib/devise/mailers/helpers.rb +0 -6
  21. data/lib/devise/models/authenticatable.rb +9 -16
  22. data/lib/devise/models/confirmable.rb +34 -43
  23. data/lib/devise/models/lockable.rb +15 -17
  24. data/lib/devise/models/recoverable.rb +21 -27
  25. data/lib/devise/models/rememberable.rb +6 -2
  26. data/lib/devise/models/timeoutable.rb +1 -1
  27. data/lib/devise/models/token_authenticatable.rb +4 -1
  28. data/lib/devise/models.rb +8 -12
  29. data/lib/devise/parameter_sanitizer.rb +49 -19
  30. data/lib/devise/rails/routes.rb +12 -9
  31. data/lib/devise/rails/warden_compat.rb +10 -2
  32. data/lib/devise/rails.rb +7 -11
  33. data/lib/devise/strategies/authenticatable.rb +0 -12
  34. data/lib/devise/token_generator.rb +70 -0
  35. data/lib/devise/version.rb +1 -1
  36. data/lib/devise.rb +23 -12
  37. data/lib/generators/active_record/devise_generator.rb +2 -5
  38. data/lib/generators/active_record/templates/migration.rb +0 -1
  39. data/lib/generators/active_record/templates/migration_existing.rb +0 -1
  40. data/lib/generators/devise/orm_helpers.rb +25 -6
  41. data/lib/generators/mongoid/devise_generator.rb +2 -2
  42. data/lib/generators/templates/devise.rb +21 -9
  43. data/test/controllers/helpers_test.rb +1 -1
  44. data/test/controllers/passwords_controller_test.rb +4 -5
  45. data/test/failure_app_test.rb +1 -1
  46. data/test/generators/active_record_generator_test.rb +31 -1
  47. data/test/integration/authenticatable_test.rb +15 -1
  48. data/test/integration/confirmable_test.rb +29 -42
  49. data/test/integration/http_authenticatable_test.rb +1 -1
  50. data/test/integration/lockable_test.rb +11 -14
  51. data/test/integration/recoverable_test.rb +23 -24
  52. data/test/integration/rememberable_test.rb +15 -13
  53. data/test/mailers/confirmation_instructions_test.rb +6 -2
  54. data/test/mailers/reset_password_instructions_test.rb +6 -2
  55. data/test/mailers/unlock_instructions_test.rb +6 -2
  56. data/test/models/confirmable_test.rb +38 -27
  57. data/test/models/lockable_test.rb +15 -5
  58. data/test/models/recoverable_test.rb +20 -48
  59. data/test/models/rememberable_test.rb +8 -0
  60. data/test/models/timeoutable_test.rb +5 -0
  61. data/test/models_test.rb +0 -19
  62. data/test/parameter_sanitizer_test.rb +23 -9
  63. data/test/rails_app/config/initializers/devise.rb +3 -0
  64. data/test/rails_app/lib/shared_admin.rb +3 -0
  65. data/test/rails_app/lib/shared_user.rb +4 -0
  66. data/test/support/helpers.rb +0 -21
  67. metadata +42 -26
  68. data/app/views/devise/_links.erb +0 -3
@@ -139,10 +139,20 @@ class LockableTest < ActiveSupport::TestCase
139
139
  end
140
140
  end
141
141
 
142
- test 'should find and unlock a user automatically' do
142
+ test 'DEPRECATED: should find and unlock a user automatically' do
143
+ swap Devise, allow_insecure_token_lookup: true do
144
+ user = create_user
145
+ user.lock_access!
146
+ locked_user = User.unlock_access_by_token(user.unlock_token)
147
+ assert_equal locked_user, user
148
+ assert_not user.reload.access_locked?
149
+ end
150
+ end
151
+
152
+ test 'should find and unlock a user automatically based on raw token' do
143
153
  user = create_user
144
- user.lock_access!
145
- locked_user = User.unlock_access_by_token(user.unlock_token)
154
+ raw = user.send_unlock_instructions
155
+ locked_user = User.unlock_access_by_token(raw)
146
156
  assert_equal locked_user, user
147
157
  assert_not user.reload.access_locked?
148
158
  end
@@ -195,7 +205,7 @@ class LockableTest < ActiveSupport::TestCase
195
205
 
196
206
  test 'should not be able to send instructions if the user is not locked' do
197
207
  user = create_user
198
- assert_not user.resend_unlock_token
208
+ assert_not user.resend_unlock_instructions
199
209
  assert_not user.access_locked?
200
210
  assert_equal 'was not locked', user.errors[:email].join
201
211
  end
@@ -203,7 +213,7 @@ class LockableTest < ActiveSupport::TestCase
203
213
  test 'should not be able to send instructions if the user if not locked and have username as unlock key' do
204
214
  swap Devise, :unlock_keys => [:username] do
205
215
  user = create_user
206
- assert_not user.resend_unlock_token
216
+ assert_not user.resend_unlock_instructions
207
217
  assert_not user.access_locked?
208
218
  assert_equal 'was not locked', user.errors[:username].join
209
219
  end
@@ -108,11 +108,21 @@ class RecoverableTest < ActiveSupport::TestCase
108
108
  end
109
109
  end
110
110
 
111
- test 'should find a user to reset his password based on reset_password_token' do
111
+ test 'DEPRECATED: should find a user to reset his password based on reset_password_token' do
112
+ swap Devise, allow_insecure_token_lookup: true do
113
+ user = create_user
114
+ user.send_reset_password_instructions
115
+
116
+ reset_password_user = User.reset_password_by_token(:reset_password_token => user.reset_password_token)
117
+ assert_equal reset_password_user, user
118
+ end
119
+ end
120
+
121
+ test 'should find a user to reset his password based on the raw token' do
112
122
  user = create_user
113
- user.ensure_reset_password_token!
123
+ raw = user.send_reset_password_instructions
114
124
 
115
- reset_password_user = User.reset_password_by_token(:reset_password_token => user.reset_password_token)
125
+ reset_password_user = User.reset_password_by_token(:reset_password_token => raw)
116
126
  assert_equal reset_password_user, user
117
127
  end
118
128
 
@@ -130,9 +140,9 @@ class RecoverableTest < ActiveSupport::TestCase
130
140
 
131
141
  test 'should return a new record with errors if password is blank' do
132
142
  user = create_user
133
- user.ensure_reset_password_token!
143
+ raw = user.send_reset_password_instructions
134
144
 
135
- reset_password_user = User.reset_password_by_token(:reset_password_token => user.reset_password_token, :password => '')
145
+ reset_password_user = User.reset_password_by_token(:reset_password_token => raw, :password => '')
136
146
  assert_not reset_password_user.errors.empty?
137
147
  assert_match "can't be blank", reset_password_user.errors[:password].join
138
148
  end
@@ -140,10 +150,10 @@ class RecoverableTest < ActiveSupport::TestCase
140
150
  test 'should reset successfully user password given the new password and confirmation' do
141
151
  user = create_user
142
152
  old_password = user.password
143
- user.ensure_reset_password_token!
153
+ raw = user.send_reset_password_instructions
144
154
 
145
155
  User.reset_password_by_token(
146
- :reset_password_token => user.reset_password_token,
156
+ :reset_password_token => raw,
147
157
  :password => 'new_password',
148
158
  :password_confirmation => 'new_password'
149
159
  )
@@ -153,38 +163,17 @@ class RecoverableTest < ActiveSupport::TestCase
153
163
  assert user.valid_password?('new_password')
154
164
  end
155
165
 
156
- test 'should not reset reset password token during reset_password_within time' do
157
- swap Devise, :reset_password_within => 1.hour do
158
- user = create_user
159
- user.send_reset_password_instructions
160
- 3.times do
161
- token = user.reset_password_token
162
- user.send_reset_password_instructions
163
- assert_equal token, user.reset_password_token
164
- end
165
- end
166
- end
167
-
168
- test 'should reset reset password token after reset_password_within time' do
169
- swap Devise, :reset_password_within => 1.hour do
170
- user = create_user
171
- user.reset_password_sent_at = 2.days.ago
172
- token = user.reset_password_token
173
- user.send_reset_password_instructions
174
- assert_not_equal token, user.reset_password_token
175
- end
176
- end
177
-
178
166
  test 'should not reset password after reset_password_within time' do
179
167
  swap Devise, :reset_password_within => 1.hour do
180
168
  user = create_user
169
+ raw = user.send_reset_password_instructions
170
+
181
171
  old_password = user.password
182
- user.ensure_reset_password_token!
183
172
  user.reset_password_sent_at = 2.days.ago
184
173
  user.save!
185
174
 
186
175
  reset_password_user = User.reset_password_by_token(
187
- :reset_password_token => user.reset_password_token,
176
+ :reset_password_token => raw,
188
177
  :password => 'new_password',
189
178
  :password_confirmation => 'new_password'
190
179
  )
@@ -201,22 +190,5 @@ class RecoverableTest < ActiveSupport::TestCase
201
190
  :reset_password_sent_at,
202
191
  :reset_password_token
203
192
  ]
204
- end
205
-
206
- test 'should generate a new token when a valid one does not exist' do
207
- user = create_user
208
- assert_nil user.reset_password_token
209
-
210
- user.ensure_reset_password_token!
211
- assert_not_nil user.reset_password_token
212
- end
213
-
214
- test 'should not generate a new token when a valid one exists' do
215
- user = create_user
216
- user.send :generate_reset_password_token!
217
- assert_not_nil user.reset_password_token
218
- old = user.reset_password_token
219
- user.ensure_reset_password_token!
220
- assert_equal user.reset_password_token, old
221
193
  end
222
194
  end
@@ -22,6 +22,14 @@ class RememberableTest < ActiveSupport::TestCase
22
22
  user.forget_me!
23
23
  end
24
24
 
25
+ test 'can generate remember token' do
26
+ user = create_user
27
+ user.singleton_class.send(:attr_accessor, :remember_token)
28
+ User.to_adapter.expects(:find_first).returns(nil)
29
+ user.remember_me!
30
+ assert user.remember_token
31
+ end
32
+
25
33
  test 'serialize into cookie' do
26
34
  user = create_user
27
35
  user.remember_me!
@@ -43,4 +43,9 @@ class TimeoutableTest < ActiveSupport::TestCase
43
43
  test 'required_fields should contain the fields that Devise uses' do
44
44
  assert_same_content Devise::Models::Timeoutable.required_fields(User), []
45
45
  end
46
+
47
+ test 'should not raise error if remember_created_at is not empty and rememberable is disabled' do
48
+ user = create_admin(remember_created_at: Time.current)
49
+ assert user.timedout?(31.minutes.ago)
50
+ end
46
51
  end
data/test/models_test.rb CHANGED
@@ -141,23 +141,4 @@ class CheckFieldsTest < ActiveSupport::TestCase
141
141
  Devise::Models.check_fields!(Magician)
142
142
  end
143
143
  end
144
-
145
- test "doesn't raise a NoMethodError exception when the module doesn't have a required_field(klass) class method" do
146
- driver = Class.new do
147
- extend Devise::Models
148
-
149
- def self.before_validation(instance)
150
- end
151
-
152
- attr_accessor :encrypted_password, :email
153
-
154
- devise :database_authenticatable
155
- end
156
-
157
- swap_module_method_existence Devise::Models::DatabaseAuthenticatable, :required_fields do
158
- assert_deprecated do
159
- Devise::Models.check_fields!(driver)
160
- end
161
- end
162
- end
163
144
  end
@@ -2,12 +2,13 @@ require 'test_helper'
2
2
  require 'devise/parameter_sanitizer'
3
3
 
4
4
  class BaseSanitizerTest < ActiveSupport::TestCase
5
- def sanitizer
6
- Devise::BaseSanitizer.new(User, :user, { user: { "email" => "jose" } })
5
+ def sanitizer(params)
6
+ Devise::BaseSanitizer.new(User, :user, params)
7
7
  end
8
8
 
9
9
  test 'returns chosen params' do
10
- assert_equal({ "email" => "jose" }, sanitizer.for(:sign_in))
10
+ sanitizer = sanitizer(user: { "email" => "jose" })
11
+ assert_equal({ "email" => "jose" }, sanitizer.sanitize(:sign_in))
11
12
  end
12
13
  end
13
14
 
@@ -22,36 +23,49 @@ if defined?(ActionController::StrongParameters)
22
23
 
23
24
  test 'filters some parameters on sign in by default' do
24
25
  sanitizer = sanitizer(user: { "email" => "jose", "password" => "invalid", "remember_me" => "1" })
25
- assert_equal({ "email" => "jose", "password" => "invalid", "remember_me" => "1" }, sanitizer.for(:sign_in))
26
+ assert_equal({ "email" => "jose", "password" => "invalid", "remember_me" => "1" }, sanitizer.sanitize(:sign_in))
26
27
  end
27
28
 
28
29
  test 'handles auth keys as a hash' do
29
30
  swap Devise, :authentication_keys => {:email => true} do
30
31
  sanitizer = sanitizer(user: { "email" => "jose", "password" => "invalid" })
31
- assert_equal({ "email" => "jose", "password" => "invalid" }, sanitizer.for(:sign_in))
32
+ assert_equal({ "email" => "jose", "password" => "invalid" }, sanitizer.sanitize(:sign_in))
32
33
  end
33
34
  end
34
35
 
35
36
  test 'filters some parameters on sign up by default' do
36
37
  sanitizer = sanitizer(user: { "email" => "jose", "role" => "invalid" })
37
- assert_equal({ "email" => "jose" }, sanitizer.for(:sign_up))
38
+ assert_equal({ "email" => "jose" }, sanitizer.sanitize(:sign_up))
38
39
  end
39
40
 
40
41
  test 'filters some parameters on account update by default' do
41
42
  sanitizer = sanitizer(user: { "email" => "jose", "role" => "invalid" })
42
- assert_equal({ "email" => "jose" }, sanitizer.for(:account_update))
43
+ assert_equal({ "email" => "jose" }, sanitizer.sanitize(:account_update))
43
44
  end
44
45
 
45
46
  test 'allows custom hooks' do
46
47
  sanitizer = sanitizer(user: { "email" => "jose", "password" => "invalid" })
47
48
  sanitizer.for(:sign_in) { |user| user.permit(:email, :password) }
48
- assert_equal({ "email" => "jose", "password" => "invalid" }, sanitizer.for(:sign_in))
49
+ assert_equal({ "email" => "jose", "password" => "invalid" }, sanitizer.sanitize(:sign_in))
50
+ end
51
+
52
+ test 'adding multiple permitted parameters' do
53
+ sanitizer = sanitizer(user: { "email" => "jose", "username" => "jose1", "role" => "valid" })
54
+ sanitizer.for(:sign_in).concat([:username, :role])
55
+ assert_equal({ "email" => "jose", "username" => "jose1", "role" => "valid" }, sanitizer.sanitize(:sign_in))
56
+ end
57
+
58
+ test 'removing multiple default parameters' do
59
+ sanitizer = sanitizer(user: { "email" => "jose", "password" => "invalid", "remember_me" => "1" })
60
+ sanitizer.for(:sign_in).delete(:email)
61
+ sanitizer.for(:sign_in).delete(:password)
62
+ assert_equal({ "remember_me" => "1" }, sanitizer.sanitize(:sign_in))
49
63
  end
50
64
 
51
65
  test 'raises on unknown hooks' do
52
66
  sanitizer = sanitizer(user: { "email" => "jose", "password" => "invalid" })
53
67
  assert_raise NotImplementedError do
54
- sanitizer.for(:unknown)
68
+ sanitizer.sanitize(:unknown)
55
69
  end
56
70
  end
57
71
  end
@@ -4,6 +4,9 @@ require "omniauth-openid"
4
4
  # Use this hook to configure devise mailer, warden hooks and so forth. The first
5
5
  # four configuration values can also be set straight in your models.
6
6
  Devise.setup do |config|
7
+ config.secret_key = "d9eb5171c59a4c817f68b0de27b8c1e340c2341b52cdbc60d3083d4e8958532" \
8
+ "18dcc5f589cafde048faec956b61f864b9b5513ff9ce29bf9e5d58b0f234f8e3b"
9
+
7
10
  # ==> Mailer Configuration
8
11
  # Configure the e-mail address which will be shown in Devise::Mailer,
9
12
  # note that it will be overwritten if you use your own mailer class with default "from" parameter.
@@ -11,4 +11,7 @@ module SharedAdmin
11
11
  validates_uniqueness_of :email, :allow_blank => true, :if => :email_changed?
12
12
  end
13
13
 
14
+ def raw_confirmation_token
15
+ @raw_confirmation_token
16
+ end
14
17
  end
@@ -12,6 +12,10 @@ module SharedUser
12
12
  extend ExtendMethods
13
13
  end
14
14
 
15
+ def raw_confirmation_token
16
+ @raw_confirmation_token
17
+ end
18
+
15
19
  module ExtendMethods
16
20
  def new_with_session(params, session)
17
21
  super.tap do |user|
@@ -67,25 +67,4 @@ class ActiveSupport::TestCase
67
67
  end
68
68
  end
69
69
  end
70
-
71
- def swap_module_method_existence(klass, method)
72
- klass.module_eval %Q[
73
- class << self
74
- alias #{method}_referenced #{method}
75
- undef #{method}
76
- end
77
- ]
78
-
79
- begin
80
- yield if block_given?
81
- ensure
82
-
83
- klass.module_eval %Q[
84
- class << self
85
- alias #{method} #{method}_referenced
86
- undef #{method}_referenced
87
- end
88
- ]
89
- end
90
- end
91
70
  end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise
3
3
  version: !ruby/object:Gem::Version
4
+ version: 3.1.0
4
5
  prerelease:
5
- version: 3.0.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - José Valim
@@ -10,58 +10,76 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-07-14 00:00:00.000000000 Z
13
+ date: 2013-09-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- version_requirements: !ruby/object:Gem::Requirement
16
+ name: warden
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
20
  - - ~>
19
21
  - !ruby/object:Gem::Version
20
22
  version: 1.2.3
21
- none: false
22
- name: warden
23
23
  type: :runtime
24
24
  prerelease: false
25
- requirement: !ruby/object:Gem::Requirement
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
26
27
  requirements:
27
28
  - - ~>
28
29
  - !ruby/object:Gem::Version
29
30
  version: 1.2.3
30
- none: false
31
31
  - !ruby/object:Gem::Dependency
32
- version_requirements: !ruby/object:Gem::Requirement
32
+ name: orm_adapter
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
33
35
  requirements:
34
36
  - - ~>
35
37
  - !ruby/object:Gem::Version
36
38
  version: '0.1'
37
- none: false
38
- name: orm_adapter
39
39
  type: :runtime
40
40
  prerelease: false
41
- requirement: !ruby/object:Gem::Requirement
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
42
43
  requirements:
43
44
  - - ~>
44
45
  - !ruby/object:Gem::Version
45
46
  version: '0.1'
46
- none: false
47
47
  - !ruby/object:Gem::Dependency
48
- version_requirements: !ruby/object:Gem::Requirement
48
+ name: bcrypt-ruby
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
49
51
  requirements:
50
52
  - - ~>
51
53
  - !ruby/object:Gem::Version
52
54
  version: '3.0'
53
- none: false
54
- name: bcrypt-ruby
55
55
  type: :runtime
56
56
  prerelease: false
57
- requirement: !ruby/object:Gem::Requirement
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
58
59
  requirements:
59
60
  - - ~>
60
61
  - !ruby/object:Gem::Version
61
62
  version: '3.0'
62
- none: false
63
63
  - !ruby/object:Gem::Dependency
64
+ name: thread_safe
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: '0.1'
71
+ type: :runtime
72
+ prerelease: false
64
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: '0.1'
79
+ - !ruby/object:Gem::Dependency
80
+ name: railties
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
65
83
  requirements:
66
84
  - - ! '>='
67
85
  - !ruby/object:Gem::Version
@@ -69,11 +87,10 @@ dependencies:
69
87
  - - <
70
88
  - !ruby/object:Gem::Version
71
89
  version: '5'
72
- none: false
73
- name: railties
74
90
  type: :runtime
75
91
  prerelease: false
76
- requirement: !ruby/object:Gem::Requirement
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ none: false
77
94
  requirements:
78
95
  - - ! '>='
79
96
  - !ruby/object:Gem::Version
@@ -81,7 +98,6 @@ dependencies:
81
98
  - - <
82
99
  - !ruby/object:Gem::Version
83
100
  version: '5'
84
- none: false
85
101
  description: Flexible authentication solution for Rails with Warden
86
102
  email: contact@plataformatec.com.br
87
103
  executables: []
@@ -91,7 +107,7 @@ files:
91
107
  - .gitignore
92
108
  - .travis.yml
93
109
  - .yardopts
94
- - CHANGELOG.rdoc
110
+ - CHANGELOG.md
95
111
  - CONTRIBUTING.md
96
112
  - Gemfile
97
113
  - Gemfile.lock
@@ -107,7 +123,6 @@ files:
107
123
  - app/controllers/devise_controller.rb
108
124
  - app/helpers/devise_helper.rb
109
125
  - app/mailers/devise/mailer.rb
110
- - app/views/devise/_links.erb
111
126
  - app/views/devise/confirmations/new.html.erb
112
127
  - app/views/devise/mailer/confirmation_instructions.html.erb
113
128
  - app/views/devise/mailer/reset_password_instructions.html.erb
@@ -132,6 +147,7 @@ files:
132
147
  - lib/devise/delegator.rb
133
148
  - lib/devise/failure_app.rb
134
149
  - lib/devise/hooks/activatable.rb
150
+ - lib/devise/hooks/csrf_cleaner.rb
135
151
  - lib/devise/hooks/forgetable.rb
136
152
  - lib/devise/hooks/lockable.rb
137
153
  - lib/devise/hooks/rememberable.rb
@@ -170,6 +186,7 @@ files:
170
186
  - lib/devise/strategies/token_authenticatable.rb
171
187
  - lib/devise/test_helpers.rb
172
188
  - lib/devise/time_inflector.rb
189
+ - lib/devise/token_generator.rb
173
190
  - lib/devise/version.rb
174
191
  - lib/generators/active_record/devise_generator.rb
175
192
  - lib/generators/active_record/templates/migration.rb
@@ -312,17 +329,17 @@ rdoc_options: []
312
329
  require_paths:
313
330
  - lib
314
331
  required_ruby_version: !ruby/object:Gem::Requirement
332
+ none: false
315
333
  requirements:
316
334
  - - ! '>='
317
335
  - !ruby/object:Gem::Version
318
336
  version: '0'
319
- none: false
320
337
  required_rubygems_version: !ruby/object:Gem::Requirement
338
+ none: false
321
339
  requirements:
322
340
  - - ! '>='
323
341
  - !ruby/object:Gem::Version
324
342
  version: '0'
325
- none: false
326
343
  requirements: []
327
344
  rubyforge_project: devise
328
345
  rubygems_version: 1.8.23
@@ -443,4 +460,3 @@ test_files:
443
460
  - test/test_helper.rb
444
461
  - test/test_helpers_test.rb
445
462
  - test/test_models.rb
446
- has_rdoc:
@@ -1,3 +0,0 @@
1
- <% ActiveSupport::Deprecation.warn "Rendering partials devise/_links.erb is deprecated" \
2
- "please use devise/shared/_links.erb instead."%>
3
- <%= render "shared/links" %>