我正在将Rails版本从3.2升级到Rails(4.2),并且我正在使用Ruby(2.2.8),但突然收到有关Devise gem的以下错误。请帮我解决这个问题。
/Users/varunsharma/.rvm/gems/ruby-2.2.8@rails4_upgrade/gems/devise-3.4.0/lib/devise/models.rb:88:in `const_get': uninitialized constant Devise::Models::RemoteAuthenticatable (NameError)
from /Users/varunsharma/.rvm/gems/ruby-2.2.8@rails4_upgrade/gems/devise-3.4.0/lib/devise/models.rb:88:in `block (2 levels) in devise'
/Users/varunsharma/.rvm/gems/ruby-2.2.8@rails4_upgrade/gems/devise-3.4.0/lib/devise/models.rb:87:in `each'
from /Users/varunsharma/.rvm/gems/ruby-2.2.8@rails4_upgrade/gems/devise-3.4.0/lib/devise/models.rb:87:in `block in devise'
from /Users/varunsharma/.rvm/gems/ruby-2.2.8@rails4_upgrade/gems/devise-3.4.0/lib/devise/models.rb:114:in `devise_modules_hook!'
from /Users/varunsharma/.rvm/gems/ruby-2.2.8@rails4_upgrade/gems/devise-3.4.0/lib/devise/models.rb:84:in `devise'
from /Users/varunsharma/Documents/leasy/app/models/user.rb:4:in `<class:User>'
from /Users/varunsharma/Documents/leasy/app/models/user.rb:1:in `<top (required)>'
config / initializers / devise.rb
Devise.setup do |config|
config.mailer_sender = "please-change-me-at-config-initializers-devise@example.com"
require 'devise/orm/active_record'
if AppParameter::AUTHENTIFICATION_METHOD == :cas_authenticatable
config.cas_base_url = AppParameter::CAS_SERVER
else
config.warden do |manager|
manager.strategies.add(:remote, Devise::Strategies::RemoteAuthenticatable)
manager.default_strategies(:scope => :user).unshift :remote
end
end
config.authentication_keys = [ :login ]
config.case_insensitive_keys = [ :login ]
config.strip_whitespace_keys = [ :login ]
config.skip_session_storage = [:http_auth]
config.stretches = Rails.env.test? ? 1 : 10
config.reconfirmable = true
config.password_length = 8..128
end
# Permet d'obtenir les routes pour les sessions
if AppParameter::AUTHENTIFICATION_METHOD == :remote_authenticatable
Devise.add_module :remote_authenticatable, :controller => :sessions, :route => { :session => :routes }
end
lib / devise / Strategies
module Devise
module Strategies
# Default strategy for signing in a user, based on his email and password in the database.
class RemoteAuthenticatable < Devise::Strategies::Authenticatable
def authenticate!
#return fail(:not_authorized) if AppParameter::WHITE_LIST_USER && ::WhiteListUser.find_by_login(authentication_hash[:login]).nil?
resource = valid_password? && mapping.to.find_for_remote_authentication(authentication_hash)
return fail(:not_found_in_database) unless resource
if validate(resource){ resource.valid_password?(password) }
resource.after_remote_authentication
success!(resource)
end
end
end
end
end
Warden::Strategies.add(:remote_authenticatable, Devise::Strategies::RemoteAuthenticatable)