Ruby:如何卸载Devise?

krn*_*krn 39 ruby devise

我已经安装了Devise,现在想删除它,包括它生成的所有文件.我怎么做?

Dam*_* Aw 98

我正在考虑今天解决同样的问题,因为这没有回答,给它一个去=)

楷模

User如果默认安装,Devise会生成模型.删除下面的行devise.这就是我的样子.

devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
Run Code Online (Sandbox Code Playgroud)

attr_accessible,你可能会删除email,:password,password_confirmation以及remember_me如果你不再需要他们.

查看

默认的Devise安装不会在您的app文件夹中生成视图.如果您为Devise生成了覆盖视图,则可以通过运行rails destroy devise:views(Rails 3)将其删除.

通常,所有视图都存储在app/views/devise.

控制器

默认情况下,Devise也不会生成任何控制器.如果你做了任何覆盖,他们很可能被称为registrations_controller.在项目中搜索继承Devise::RegistrationsController类的控制器.

此外,如果您是设计的维基和猴子-ED周围添加重定向方法等,看出来的方法,例如after_sign_in_path_for,store_location等这是将用户重定向.

迁移

如果您通过其生成器安装Devise,请留意迁移create_users.如果您不再需要它,请使用drop_table :users迁移来摆脱它.

我假设大多数人都希望保留他们的用户模型.如果您使用Devise <2.0,则迁移由助手完成.一旦你从中移除了Devise Gemfile,Rails将不会理解下面的帮助程序并抛出错误,例如,当你试图在另一个盒子上重新运行这些迁移时.这些助手是:

t.database_authenticatable
t.recoverable  
t.rememberable
t.trackable

t.encryptable
t.confirmable
t.lockable
t.token_authenticatable # => becomes t.string :authentication_token
Run Code Online (Sandbox Code Playgroud)

对于确切的列,下面是对Devise生成的列的引用.

https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style

上面的指南列出了Devise使用帮助程序生成的字段.您应该能够查看列表和模型(例如,User在控制台中调用),生成删除这些列的迁移.

但...

有点不幸的是,为了保持一致性,我们必须使用上面的指南将迁移转换为不使用帮助程序,然后生成迁移以删除它们.这适用于迁移历史记录的一致性,否则运行迁移的任何人都可能尝试调用不存在的帮助程序.此外,迁移以删除字段也会期望字段存在.

或者,可能是压缩迁移并依赖于schema.rb/ structure.sql为架构的最新状态的好时机.即使在删除迁移后,您也可以随时使用重新创建开发数据库rake db:schema:load.

初始化器和区域设置

删除devise.rbconfig/initializersdevise.en.ymlconfig/locales.

路线

删除任何devise_for行.这些将在删除gem后引发错误.

宝石文件

Yaay.全部圆顶,gem 'devise'从您的gemfile中删除该行.

  • 我唯一不同意的是从原始迁移中删除字段。迁移作为一种数据库版本控制存在,可以运行或回滚。因此,我认为最好创建另一个迁移,从该迁移中将这些字段从模型中删除。 (2认同)

Nat*_*nna 10

使用生成器也可以删除配置文件(步骤2),因此整个过程将是(引用以前的答案):

  1. 删除表格: rake db:rollback VERSION=<insert the version number of the migration>
  2. 删除配置: rails destroy devise:install
  3. 删除您的用户模型:( rails destroy devise User将'User'替换为您的模型名称)
  4. 如果您使用它们(再次将'user'替换为您的模型名称),请删除您的routes.rb,gemfile,控制器文件和视图文件中的设计引用(如下所示):
    • devise_for (routes.rb)
    • 宝石'设计' (宝石文件)
    • before_action:authenticate_user!(控制器)
    • user_signed_in? (控制器,视图)
    • current_user (控制器,视图)
    • user_session (控制器,视图)