如何卸载 spree_auth_devise gem

Howto Uninstall spree_auth_devise gem

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

当我按照说明安装 Spree 时,我按照自述文件页面上的建议安装了 spree_auth_devise gem 和 运行 迁移和其他安装命令。当我开始使用 gem 时,我发现我的用户 class 存在问题,这当然是因为我在不使用 devise 时安装了 devise gem .

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

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

我不确定如何删除 gem 并让我的用户模型与 spree 一起工作。任何帮助表示赞赏。我不确定除此之外还需要提供哪些详细信息或代码,因为有很多文件受此影响。我会post任何你觉得有帮助的东西。

更新: 根据下面的评论,这里是我的 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)>'

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

删除 config/initializers/devise.rb 如果你还没有这样做

从您的routes.rb

中删除任何devise相关代码

可能与此类似:

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 revert or git reset

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

这个模块定义在 spree_auth_gem here and also gets included to your ApplicationController in the engine.

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

下面的内容可能也没有必要。我会一个一个地删除它们,看看你的应用程序是否仍然有效:

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