我已經安裝了Devise,現在想刪除它,包括它生成的所有文件。我怎麼做?Ruby:如何卸載Devise?
回答
我期待在今天解決同樣的問題,因爲這是不回答,給它一去=)
模式
如果默認安裝設計生成User
模型。 刪除devise
下的行。這是我的樣子。
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
在attr_accessible
,你可能會刪除email
,:password
,password_confirmation
和remember_me
如果你不再需要他們。
查看
默認安裝設計中不產生你的app
文件夾視圖。如果您爲Devise生成覆蓋視圖,則可以通過運行rails destroy devise:views
(Rails 3)來刪除它們。
通常,所有視圖都存儲在app/views/devise
中。
控制器
默認情況下,設計出不會產生任何的控制器了。如果你做了任何覆蓋,他們很可能被稱爲registrations_controller
。在您的項目中搜索繼承Devise::RegistrationsController
類的控制器。另外,如果你遵循Devise的wiki和猴子周圍添加重定向方法等,請注意諸如after_sign_in_path_for
,store_location
等方法用於重定向用戶。
遷移
如果你通過它的發電機安裝設計,尋找出一個遷移create_users
。如果您不再需要它,請在遷移中使用drop_table :users
以擺脫它。
我會假設大多數人會想保持他們的用戶模型。如果您使用Devise < 2.0,則遷移由助手完成。一旦從Gemfile
中刪除Devise,Rails就不會理解下面的幫助者並拋出錯誤,例如,當您嘗試在另一個框上重新運行這些遷移時。這些助手是:
t.database_authenticatable
t.recoverable
t.rememberable
t.trackable
t.encryptable
t.confirmable
t.lockable
t.token_authenticatable # => becomes t.string :authentication_token
對於確切的列,下面是對由Devise生成的列的引用。
https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style
上面的指南列出使用由助手設計產生的場。您應該能夠查看列表和您的模型(例如,在控制檯中調用User
),生成一個刪除這些列的遷移。
但是...
爲了保持一致性,我們必須將遷移轉換爲不使用助手使用上面的指南,然後生成一個遷移來刪除它們。這是爲了遷移歷史一致性,否則運行遷移的任何人都可能嘗試調用不存在的幫助器。此外,您遷移到刪除字段也將期望字段出現。
或者,它可能是擠出遷移並依賴模式的最新狀態的schema.rb
/structure.sql
的好時機。即使在刪除遷移後,您也可以隨時使用rake db:schema:load
隨時重新創建您的開發 DB。
初始化器和Locale
刪除在config/initializers
devise.rb
和devise.en.yml
在config/locales
。
路線
刪除任何devise_for
線。這些將在刪除寶石後引發錯誤。
寶石文件
Yaay。所有圓頂,從您的gemfile中刪除行gem 'devise'
。
清晰,寫得很好,謝謝! – lambinator
感謝致謝=) –
我唯一不同意的是從原始遷移中刪除字段。遷移作爲數據庫的一種版本控制存在,您可以運行或回滾。因此,我認爲最好創建另一個從模型中刪除這些字段的遷移。 – nunopolonia
在我的情況下,我有兩個模型用戶和管理員,我堅持Devise,但我有ActiveAdmin名稱衝突問題,需要我刪除管理模型。但是因爲在設計中有很多關於Admin的引用,我不得不採取下面的步驟。不過,我認爲它也回答了上面的原始問題。我相信這樣做的正確方法是:
1.找到用戶模型的設計遷移並將其回滾[重要提示:如果您不想刪除與Devise關聯的用戶表,則跳過此STEP]:
rake db:rollback VERSION=<insert the version number of the migration>
例如: rake db:rollback VERSION:20110430031806
2.Run此命令刪除設計和相關聯的文件。 rails destroy devise Admin
(如果Admin是具有用戶帳戶的模型的名稱)。
這會產生這樣的輸出:
invoke active_record
remove db/migrate/20110430031806_devise_create_admins.rb
remove app/models/admin.rb
invoke test_unit
remove test/unit/admin_test.rb
remove test/fixtures/admins.yml
route devise_for :admins
3.To徹底清除設計,你需要刪除所有引用它在你的模型,控制器和視圖。這是手動工作。上面的答案提供了找到這個垃圾的很好的細節,但是對於我的目的來說是不完整的。我希望這可以幫助別人。
我發現daemonsy的回覆是非常有用有幫助。當你這樣做時,還有其他一些事情需要考慮。
更換設計
- 如果你想用自己的身份驗證來取代制定,我建議這個Railscast:(需要訂閱,但它是最好的$ 9 /月,你可以花)Authentication from Scratch (revised)。
- 這Railscast(無需預訂)可與忘記密碼鏈接幫助和「記住我」選項(東西設計提供開箱即用,但你幾乎可以建立容易自己):Remember Me & Reset Password
測試
- 你這樣做之前,我建議運行所有測試,以確保它們正在傳遞。
- 刪除Devise後,您的驗證相關測試可能會失敗,因此計劃花些時間修復失敗的測試。這是一件好事,因爲它可以幫助你看到當你移除Devise時什麼東西「爆發」了。
- 確保你也檢查你的測試助手。我的大部分助手都在/spec/spec_helper.rb中。事實上,我更新了spec_helper.rb中的方法(例如,「login_user」)後,大多數失敗的測試都開始傳遞。
使用發電機刪除的配置文件,以及(步驟2),因此整個過程會被(引用以前的答案):
- 刪除表:
rake db:rollback VERSION=<insert the version number of the migration>
- 刪除配置: (以模型的名稱取代「用戶」)
rails destroy devise User
- 刪除引用您的routes.rb,Gemfile中,控制設計:
rails destroy devise:install
- 刪除您的用戶模型LER文件,像下面的視圖文件,如果你使用它們(再次更換 '用戶' 與型號名稱):
- devise_for(routes.rb中)
- 寶石 '設計'(的Gemfile )
- before_action:authenticate_user!(控制器)
- user_signed_in?(控制器,視圖)
- CURRENT_USER(控制器,視圖)
- USER_SESSION(控制器,視圖)
- 1. 如何卸載Ruby版本?
- 2. 如何卸載ruby-oci8
- 3. 如何正確卸載Ruby 1.9.1
- 4. 如何在ubuntu上卸載Ruby?
- 5. 如何使用RVM卸載ruby和gems?
- 6. 如何完全卸載rails,ruby和rubygems?
- 7. 如何在ruby/rspec中卸載'require'?
- 8. 卸載Ruby去舊版本
- 9. 從rbenv卸載ruby版本
- 10. 無法卸載Ruby 2.0.0
- 11. Ruby on Rails:可卸載
- 12. Ubuntu 11.10 - 如何卸載Ruby 1.8.7並安裝Ruby 1.9.2?
- 13. 如何卸載
- 14. 如何卸載
- 15. 如何卸載
- 16. 如何卸載
- 17. Ruby on Rails + Devise
- 18. 如何卸載DOTS
- 19. 如何卸載scons?
- 20. 如何卸載NSBundle?
- 21. 如何卸載Laravel?
- 22. 如何卸載Golang?
- 23. 如何卸載spree_frontend?
- 24. 如何卸載virtualenvwrapper?
- 25. 如何卸載arcanist?
- 26. 如何卸載Flask?
- 27. 如何卸載Hadoop?
- 28. 如何卸載couchDB?
- 29. 如何卸載Qt5
- 30. 如何卸載Postgis?
我相信你需要運行一個發電機設計,以創建任何文件在您的目錄中開始。因此你應該可以運行例如'鐵軌銷燬設計:視圖'。你已經嘗試過了嗎? – polarblau
我知道我應該在git中分支它 –