Devise gem`const_get':未初始化的常量Devise :: Models :: RemoteAuthenticatable(NameError)

时间:2020-06-26 11:45:27

标签: ruby-on-rails ruby devise

我正在将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)

0 个答案:

没有答案