Mam zainstalowany Devise i teraz chcę go usunąć, w tym wszystkie pliki, które wygenerował. Jak mogę to zrobić?Ruby: jak odinstalować Devise?
Odpowiedz
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.
Jasne i dobrze napisane, dziękuję! – lambinator
Dzięki za komplement =) –
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
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.
Znalazłem pomoc dla daemonsy na bardzo pomocna. Oto kilka innych rzeczy, które należy rozważyć.
Wymiana opracować
- 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).
- 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
- Zanim to zrobisz, polecam uruchomione wszystkie testy, aby upewnić się, że jesteś przejazdem.
- 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.
- 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").
Użyj generator, aby usunąć pliki konfiguracyjne oraz (etap 2), dzięki czemu cały proces byłby (odwoływania się wcześniejsze odpowiedzi):
- Usuń tabelę:
rake db:rollback VERSION=<insert the version number of the migration>
- Usuń konfigurację:
rails destroy devise:install
- Usuń model użytkownika:
rails destroy devise User
(zastąpić 'user' z nazwą modelu) - 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)
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
Wiem, że powinienem rozgałęzić go w git –