2011-07-26 7 views
34

Mam zainstalowany Devise i teraz chcę go usunąć, w tym wszystkie pliki, które wygenerował. Jak mogę to zrobić?Ruby: jak odinstalować Devise?

+1

wierzę trzeba uruchomić generator dla Devise tworzyć żadnych plików w twoim katalogu na początek. Dlatego powinieneś być w stanie uruchomić np. 'rails destroy devise: views'. Czy już próbowałeś? – polarblau

+0

Wiem, że powinienem rozgałęzić go w git –

Odpowiedz

89

Czekam na rozwiązanie tego samego problemu, a od dzisiaj to nie zostanie odebrane, dając mu szansę =)

modele

Devise generuje User modelu jeśli instalowany domyślnie. Usuń linie pod numerem devise. Tak wygląda moja.

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

W attr_accessible, można usunąć email, :password, password_confirmation i remember_me jeśli już nie są potrzebne.

Odwiedzin

domyślny Devise zainstalować nie generować widoki w folderze app. Jeśli wygenerowałeś nadpisujące widoki Devise, możesz je usunąć, uruchamiając rails destroy devise:views (Rails 3).

Ogólnie wszystkie widoki są przechowywane w app/views/devise.

Kontrolery

Domyślnie Devise nie generuje żadnych kontrolerów zbyt. Jeśli zrobiłeś jakieś przesłonięcia, najprawdopodobniej są one znane jako registrations_controller. Wyszukaj w projekcie kontrolery, które dziedziczą klasę Devise::RegistrationsController.

Ponadto, jeśli śledziłeś wiki programu Devise i używasz małp, aby dodać metody przekierowania itp., Poszukaj metod takich jak after_sign_in_path_for, store_location itd., Które służą do przekierowania użytkowników.

Migracje

Jeśli zainstalowano opracować za pośrednictwem swoich generatorów, zwróć uwagę na migracji create_users. Jeśli już go nie potrzebujesz, skorzystaj z migracji drop_table :users, aby się go pozbyć.

Założę się, że większość ludzi chciałaby zachować swój model użytkownika. Jeśli używasz Devise < 2.0, migracje są wykonywane przez pomocników. Po usunięciu Devise z Gemfile, Railsy nie zrozumieją poniższych pomocników i będą zgłaszać błędy, na przykład, gdy próbujesz ponownie wykonać te migracje w innym polu. Są to:

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

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

Dla dokładnych kolumn poniżej znajduje się odniesienie do kolumn generowanych przez Devise.

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

Przewodnik powyżej listę pól generowanych przez opracować używając pomocników. Powinieneś być w stanie przejrzeć listę i swój model (na przykład wywołanie User w konsoli), wygenerować migrację, która usuwa te kolumny.

ALE ...

To trochę niefortunne, że aby zachować spójność, musimy przekonwertować migrację, aby nie używać pomocy, korzystając z powyższego przewodnika, a następnie wygenerować migrację, aby je usunąć. Ma to na celu spójność historii migracji, w przeciwnym razie każda osoba przeprowadzająca migracje może próbować wywołać nieistniejących pomocników. Również migracja w celu usunięcia pól spowoduje, że pola będą również obecne.

Alternatywnie, może być to dobry moment, aby zgnieść migracje i polegać na schema.rb/structure.sql dla aktualnego stanu schematu. Nawet po usunięciu migracji zawsze możesz odtworzyć swój development DB w dowolnej chwili, używając rake db:schema:load.

inicjalizatory i Locale

Usuń devise.rb w config/initializers i devise.en.yml w config/locales.

Trasy

Usunąć devise_for linie. Będą powodować błędy po usunięciu klejnotu.

Gem File

Yaay. Wszystkie kopuły, usuń linię gem 'devise' ze swojego gemfile.

+0

Jasne i dobrze napisane, dziękuję! – lambinator

+0

Dzięki za komplement =) –

+1

Jedyne, czego nie zgadzam się, to usunięcie pól z pierwotnej migracji.Migracje istnieją jako rodzaj kontroli wersji bazy danych, którą można uruchamiać lub wycofywać. Z tego powodu uważam, że lepiej jest utworzyć kolejną migrację, w której usuniesz te pola z modelu. – nunopolonia

2

W moim przypadku miałem dwa modele User i Admin i trzymałem się Devise, ale miałem problem z kolizją nazw z ActiveAdmin, który wymagał ode mnie usunięcia modelu Admin. Ale ponieważ w opracowaniu było tak wiele odniesień do administratora, musiałem podjąć poniższe kroki. Wydaje mi się, że również odpowiada na pierwotne pytanie powyżej. Wierzę, że prawidłowy sposób to zrobić:

1. Znajdź migrację devise dla modelu użytkownika i wycofaj ją [WAŻNE: JEŚLI NIE chcesz usunąć tabeli użytkownika skojarzonej z Devise, a następnie SKIP THIS STEP]:

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

przykład: rake db:rollback VERSION:20110430031806

2.Run tego polecenia, aby usunąć opracować i związane z nimi pliki. rails destroy devise Admin (jeśli Admin jest nazwą modelu z kontami użytkowników).

ta produkuje ten wyjściowe:

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 opracować całkowicie usunąć, trzeba usunąć wszelkie odniesienia do niej w swoich modeli, kontrolerów i widoków. To jest praca ręczna. Powyższa odpowiedź dostarcza dobrych szczegółów do znalezienia tego cruft'a, ale była niepełna dla moich celów. Mam nadzieję, że to pomoże komuś innemu.

1

Znalazłem pomoc dla daemonsy na bardzo pomocna. Oto kilka innych rzeczy, które należy rozważyć.

Wymiana opracować

  1. Jeśli masz zamiar wymienić opracować z własnym uwierzytelniania, polecam ten Railscast: (wymagana subskrypcja, ale to najlepszy $ 9/MO można spędzić) Authentication from Scratch (revised).
  2. I to Railscast (nie wymagana subskrypcja) może pomóc w zapomniał linku hasło i „zapamiętaj mnie” opcja (rzeczy Opracować oferty po wyjęciu z pudełka, ale że można zbudować dość łatwo sobie): Remember Me & Reset Password

testy

  1. Zanim to zrobisz, polecam uruchomione wszystkie testy, aby upewnić się, że jesteś przejazdem.
  2. Po usunięciu Devise, testy zależne od uwierzytelniania prawdopodobnie się nie powiedzie, więc planujesz spędzić trochę czasu na naprawianiu wadliwych testów. To dobrze, ponieważ pomoże ci zobaczyć, jakie rzeczy "zepsuły się" po usunięciu Devise.
  3. Upewnij się, że sprawdzasz także pomocników testowych. Większość moich pomocników była w /spec/spec_helper.rb. W rzeczywistości większość moich testów na wypadek niepowodzenia zaczęło działać, gdy zaktualizowałem metody w spec_helper.rb (np. "Login_user").
8

Użyj generator, aby usunąć pliki konfiguracyjne oraz (etap 2), dzięki czemu cały proces byłby (odwoływania się wcześniejsze odpowiedzi):

  1. Usuń tabelę: rake db:rollback VERSION=<insert the version number of the migration>
  2. Usuń konfigurację: rails destroy devise:install
  3. Usuń model użytkownika: rails destroy devise User (zastąpić 'user' z nazwą modelu)
  4. Usuń odnośniki do opracowania w routes.rb, gemfile, kontroli ler plików i przeglądanie plików, takie jak poniżej, jeśli je stosować (znowu zastępując 'user' z nazwą modelu):
    • devise_for (routes.rb)
    • gem 'opracować' (gemfile)
    • before_action: authenticate_user! (kontrolery)
    • user_signed_in? (kontrolery, widoki)
    • current_user (kontrolery, widoki)
    • user_session (kontrolery, widoki)