2011-07-26 38 views
34

Tôi đã cài đặt Devise và bây giờ muốn xóa nó, bao gồm tất cả các tệp mà nó đã tạo. Làm thế nào để làm điều đó?Ruby: cách gỡ cài đặt Devise?

+1

Tôi tin rằng bạn cần phải chạy một máy phát điện cho lập mưu để tạo ra bất kỳ tập tin trong thư mục của bạn để bắt đầu. Do đó bạn sẽ có thể chạy ví dụ: 'rails destroy devise: views'. Bạn đã thử nó chưa? – polarblau

+0

Tôi biết rằng tôi nên phân nhánh nó trong git –

Trả lời

89

Tôi nhìn vào giải quyết cùng một vấn đề ngày hôm nay và vì đây là không trả lời, cho nó một đi =)

Models

lập mưu tạo ra một mô hình User nếu bạn cài đặt theo mặc định. Xóa các dòng bên dưới devise. Đây là cách tôi trông như thế nào.

devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

Trong attr_accessible, bạn có thể loại bỏ email, :password, password_confirmationremember_me nếu bạn không còn cần đến chúng.

Lần

Một mặc định lập mưu cài đặt không tạo ra quan điểm trong thư mục app của bạn. Nếu bạn tạo lượt xem ghi đè cho Devise, bạn có thể xóa chúng bằng cách chạy rails destroy devise:views (Rails 3).

Nói chung, tất cả các chế độ xem được lưu trữ trong app/views/devise.

Controller

Theo mặc định, lập mưu không tạo ra bất kỳ điều khiển quá. Nếu bạn đã thực hiện bất kỳ phần ghi đè nào, chúng có nhiều khả năng được gọi là registrations_controller. Tìm kiếm dự án của bạn cho các trình điều khiển kế thừa lớp học Devise::RegistrationsController.

Ngoài ra, nếu bạn đã theo dõi Devise's wiki và monkey-ed xung quanh để thêm các phương thức chuyển hướng, hãy tìm các phương thức như after_sign_in_path_for, store_location v.v ... để chuyển hướng người dùng.

Migrations

Nếu bạn cài đặt lập mưu thông qua máy phát điện của nó, tìm cho ra một sự chuyển đổi create_users. Nếu bạn không cần nó nữa, hãy sử dụng drop_table :users trong quá trình di chuyển để loại bỏ nó.

Tôi sẽ giả định hầu hết mọi người muốn giữ mô hình Người dùng của họ. Nếu bạn đang sử dụng Devise < 2.0, việc di chuyển được thực hiện bởi người trợ giúp. Khi bạn xóa Devise khỏi Gemfile, Rails sẽ không hiểu những người trợ giúp bên dưới và ném lỗi, ví dụ: khi bạn đang cố gắng chạy lại các di chuyển này trên một hộp khác. Những người trợ giúp này là:

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

t.encryptable 
t.confirmable 
t.lockable 
t.token_authenticatable # => becomes t.string :authentication_token 

Đối với các cột chính xác, dưới đây là tham chiếu đến các cột được tạo bởi Devise.

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

Hướng dẫn ở trên liệt kê các lĩnh vực được tạo ra bởi lập mưu sử dụng người giúp đỡ. Bạn sẽ có thể xem qua danh sách và mô hình của mình (ví dụ: gọi User trong bảng điều khiển), tạo di chuyển xóa các cột đó.

NHƯNG ...

Đó là một chút không may cho sự nhất quán, chúng tôi phải chuyển đổi di chuyển để không sử dụng người trợ giúp bằng cách sử dụng hướng dẫn ở trên sau đó tạo ra một di chuyển để loại bỏ chúng. Điều này là dành cho tính nhất quán trong lịch sử di chuyển, nếu không thì bất kỳ ai chạy di chuyển có thể cố gọi những người trợ giúp không tồn tại. Ngoài ra, di chuyển của bạn để loại bỏ các trường cũng sẽ mong đợi các trường có mặt.

Ngoài ra, đây có thể là thời điểm tốt để loại bỏ các di chuyển và dựa trên schema.rb/structure.sql cho trạng thái cập nhật của lược đồ. Ngay cả sau khi xóa di chuyển, bạn luôn có thể tạo lại phát triển DB bất cứ lúc nào bằng cách sử dụng rake db:schema:load.

Initializers và Locale

Di devise.rb trong config/initializersdevise.en.yml trong config/locales.

đường

Hủy bỏ bất kỳ devise_for dòng. Chúng sẽ gây ra lỗi sau khi loại bỏ đá quý.

Gem tập

Yaay. Tất cả các mái vòm, loại bỏ các dòng gem 'devise' từ gemfile của bạn.

+0

Rõ ràng và được viết tốt, cảm ơn bạn! – lambinator

+0

Cảm ơn lời khen =) –

+1

Điều duy nhất tôi không đồng ý là xóa các trường khỏi di chuyển ban đầu.Di chuyển tồn tại như một loại điều khiển phiên bản của cơ sở dữ liệu của bạn, bạn có thể chạy hoặc quay lại. Bởi vì điều này, tôi nghĩ tốt hơn là tạo một di chuyển khác trong đó bạn loại bỏ các trường này khỏi mô hình. – nunopolonia

2

Trong trường hợp của tôi, tôi có hai mô hình Người dùng và Quản trị viên và tôi đang gắn bó với Devise, nhưng tôi đã gặp phải sự cố về tên va chạm với ActiveAdmin yêu cầu tôi xóa mô hình Quản trị. Nhưng vì có quá nhiều tham chiếu đến Admin trong việc đưa ra, tôi phải thực hiện các bước bên dưới. Tôi nghĩ rằng nó trả lời câu hỏi ban đầu ở trên là tốt, mặc dù. Tôi tin rằng cách chính xác để thực hiện việc này là:

1.Tìm sự di chuyển cho mô hình người dùng và cuộn lại [QUAN TRỌNG: NẾU BẠN KHÔNG MUỐN loại bỏ bảng người dùng được liên kết với Devise, thì hãy M SKO NÀY BƯỚC]:

rake db:rollback VERSION=<insert the version number of the migration>

dụ: rake db:rollback VERSION:20110430031806

2.Run lệnh này để loại bỏ lập mưu và các tập tin liên quan. rails destroy devise Admin (nếu Quản trị là tên của mô hình có tài khoản người dùng).

này tạo ra sản lượng này:

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 hoàn toàn loại bỏ lập mưu, bạn cần phải loại bỏ tất cả các tham chiếu đến nó trong các mô hình, điều khiển và quan điểm của bạn. Đây là công việc thủ công. Câu trả lời ở trên cung cấp chi tiết tốt cho việc tìm kiếm tàu ​​tuần dương này, nhưng không đầy đủ cho mục đích của tôi. Tôi mong điều này giúp được người nào khác.

1

Tôi tìm thấy câu trả lời của daemon là rất hữu ích. Dưới đây là một vài điều khác để xem xét khi bạn làm điều này.

Thay lập mưu

  1. Nếu bạn đang đi để thay thế lập mưu với xác thực của riêng bạn, tôi khuyên bạn nên railscast này: Authentication from Scratch (revised) (yêu cầu đăng ký, nhưng đó là $ 9/tháng tốt nhất mà bạn có thể chi tiêu).
  2. Và railscast này (không yêu cầu đăng ký) có thể giúp với một liên kết mật khẩu quên và "nhớ đến tôi" tùy chọn (điều Vạch Mời ra khỏi hộp, nhưng mà bạn có thể xây dựng khá dễ dàng cho mình): Remember Me & Reset Password

Kiểm tra

  1. Trước khi bạn thực hiện việc này, tôi khuyên bạn nên chạy tất cả các thử nghiệm để đảm bảo chúng vượt qua.
  2. Sau khi bạn xóa Devise, các kiểm tra phụ thuộc vào xác thực của bạn có thể sẽ không thành công, vì vậy hãy dành một chút thời gian để sửa các lỗi kiểm tra. Đây là một điều tốt vì nó sẽ giúp bạn xem những thứ "phá vỡ" khi bạn loại bỏ Devise.
  3. Đảm bảo bạn cũng kiểm tra người trợ giúp thử nghiệm của mình. Hầu hết những người trợ giúp của tôi đều nằm trong /spec/spec_helper.rb. Trong thực tế, hầu hết các thử nghiệm thất bại của tôi đã bắt đầu chuyển một khi tôi cập nhật các phương thức trong spec_helper.rb (ví dụ, "login_user").
8

Sử dụng máy phát điện để gỡ bỏ những file cấu hình cũng như (bước 2), do đó toàn bộ quá trình sẽ được (tham khảo câu trả lời trước):

  1. Di bảng: rake db:rollback VERSION=<insert the version number of the migration>
  2. Tháo cấu hình: rails destroy devise:install
  3. Xóa mô hình người dùng của bạn: rails destroy devise User (thay thế 'Người dùng' bằng tên của mô hình của bạn)
  4. Xóa tham chiếu để đặt ra trong tuyến đường của bạn.rb, gemfile, control ler file, và xem các tệp như sau, nếu bạn sử dụng chúng (một lần nữa thay thế 'sử dụng' bằng tên mô hình của bạn):
    • devise_for (routes.rb)
    • đá quý 'đưa ra' (gemfile)
    • before_action: authenticate_user! (bộ điều khiển)
    • user_signed_in? (bộ điều khiển, lượt xem)
    • CURRENT_USER (bộ điều khiển, lượt xem)
    • user_session (bộ điều khiển, quan điểm)
Các vấn đề liên quan