如何卸载spree_auth_devise gem

时间:2017-10-23 22:39:05

标签: ruby spree ruby-on-rails-5.1 spree-auth-devise

我有一个已经包含自定义用户控制器的现有Rails 5.1应用程序。

当我按照安装Spree的说明操作时,我安装了spree_auth_devise gem并按照自述页面上的建议运行了迁移和其他安装命令。当我开始使用gem时,我发现我的User类存在问题,当然 - 这是因为我在不使用设计时安装了devise gem

我尝试按照有关如何在不使用设计时设置自定义用户模型的说明进行操作,但在按照这些说明操作并删除spree_auth_devise后,我无法启动该网站。

当我运行安装了gem的站点时,我的“登录”等自定义路由不起作用。它们指向安装spree的路径,而不是我的routes.rb中定义的路径。

我不知道如何删除gem并让我的用户模型使用spree。任何帮助表示赞赏。我不确定除此之外提供什么细节或代码,因为有很多文件受此影响。我会发布你认为可能有帮助的任何内容。

更新:根据以下评论,以下是我的routes.rb的狂欢相关部分。如果您还需要其他信息,请与我们联系:

mount Spree::Core::Engine, at: '/store'

get 'login'                                 =>  'sessions#new'
get 'signup'                                =>  'users#new'
delete  'logout'                            =>  'sessions#destroy'
post 'login'                                =>  'sessions#create'

更新2 当我尝试启动服务器或运行rake db:migrate ...时出现此错误

Exiting
/Users/user/sites/site/app/controllers/application_controller.rb:8:in `<class:ApplicationController>': uninitialized constant Spree::AuthenticationHelpers (NameError)
    from /Users/user/sites/site/app/controllers/application_controller.rb:1:in `<top (required)>'

1 个答案:

答案 0 :(得分:2)

根据您的信息,试试这个:

删除 config/initializers/devise.rb如果您还没有

删除 devise

中的所有 routes.rb 相关代码

可能看起来与此类似:

devise_for :users, controllers: {
    confirmations: 'users/confirmations',
    passwords: 'users/passwords',
    registrations: 'users/registrations',
    sessions: 'users/sessions',
    unlocks: 'users/unlocks'
}

检查是否有与 devise / spree_auth_devise相关的代码

您的User型号可能会显示如下:

devise :database_authenticatable, :registerable

或者在你的ApplicationController或任何其他控制器中(git grep it):

before_action :authenticate_user!

回滚数据库更改(适当地设置STEP和RAILS_ENV):

rake db:rollback STEP=1 RAILS_ENV=development

如果没有任何帮助,请尝试git revertgit reset

关于您的错误uninitialized constant Spree::AuthenticationHelpers

此模块在spree_auth_gem here中定义,并且也包含在the engineApplicationController中。

如果您通过this guide include Spree::AuthenticationHelpers中删除 ApplicationController 进行设置狂欢。

以下可能也包含在内。我会逐个删除它们,看看你的应用是否仍然有效:

include Spree::Core::ControllerHelpers::Auth
include Spree::Core::ControllerHelpers::Common
include Spree::Core::ControllerHelpers::Order
include Spree::Core::ControllerHelpers::Store
helper 'spree/base'