Wie man ein "Rails Generate" umkehrt


471

Ich möchte alle erstellten Dateien löschen und alle vorgenommenen Änderungen rückgängig machen, jedoch nicht unbedingt an der Datenbank, sondern mehr an den Konfigurationsdateien.

Ich möchte automatisch alle Ressourcenzuordnungen für das Modell / den Controller löschen, die in der Datei route.rb gelöscht wurden, und überall dort, wo möglicherweise Änderungen vorgenommen wurden.

Antworten:


929
rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho

Rails 3.2 fügt ddem Befehl eine neue Verknüpfung hinzu , sodass Sie jetzt schreiben können:

rails d controller lalala
rails d model yadayada
rails d scaffold hohoho

1
Übrigens, wie verwende ich diesen Befehl, um ein Gerüst zu löschen? Das Modell und der Controller funktionieren einwandfrei ... aber wie kann ich ein Gerüst komplett umkehren?
Marcamillion

6
Ok, ich habe es herausgefunden. Vielleicht habe ich etwas falsch geschrieben. Ich bin gerade gelaufen rails destroy scaffold lalalalund das hat funktioniert.
Marcamillion

38
@ Marcamillion Muss das zusätzliche 'L' gewesen sein.
Varatis

1
Was ist mit dem Entfernen von Dateien im Zusammenhang mit einer Edelsteininstallation wierails generate <gemname>:install
Doug

2
@ Doug, ich denke nicht, dass das möglich ist. Am besten führen Sie den Generator erneut mit dem -fFlag aus, um ihn zu zwingen, die Dateien neu zu erstellen / erneut zu bearbeiten. Anschließend können Sie sehen, welche Dateien erstellt / geändert wurden, und sie manuell löschen.
Fábio Batista

49

Erwähnenswert ist hier die -pFlagge ("p" für so tun als ob ).

Wenn Sie dies dem Befehl hinzufügen, wird einfach ein "Test" ausgeführt und es wird angezeigt, welche Dateien gelöscht werden, ohne sie tatsächlich zu löschen.

$ rails d controller welcome -p

  remove  app/controllers/welcome_controller.rb
  invoke  erb
  remove    app/views/welcome
  invoke  test_unit
  remove    test/controllers/welcome_controller_test.rb
  invoke  helper
  remove    app/helpers/welcome_helper.rb
  invoke    test_unit
  remove      test/helpers/welcome_helper_test.rb
  invoke  assets
  invoke    coffee
  remove      app/assets/javascripts/welcome.js.coffee
  invoke    scss
  remove      app/assets/stylesheets/welcome.css.scss

Wenn Sie damit zufrieden sind, führen Sie den Befehl erneut ohne -pFlag aus.


Ich denke, das ist die beste Antwort
Emil Reña Enriquez

24

rails destroy controller Controller_namegab eine Reihe von Fehlern zurück. Um den Controller zerstören zu können, musste ich verwandte Routen in route.rb entfernen. PS Ich benutze Schienen 3.1


Bitte fassen Sie Ihre Aktionen nicht zusammen, es sei denn, Sie möchten, dass diese Antwort die ausgewählte richtige Antwort ist.
Der Blechmann

11

Dies ist ein Prototyp zum Generieren oder Zerstören eines Controllers oder Modells in Rails:

rails generate/destroy controller/model [controller/model Name]

Wenn Sie beispielsweise einen Benutzercontroller generieren müssen:

rails generate controller User

oder

rails g controller User

Wenn Sie den Benutzercontroller zerstören oder zur obigen Aktion zurückkehren möchten, verwenden Sie:

rails destroy controller User

oder:

rails d controller User

Geben Sie hier die Bildbeschreibung ein


4

Sie können die rails d model/controller/migration ...mit dem rails generateBefehl generierten Änderungen zerstören oder entfernen .

Zum Beispiel:

rails g model Home name:string

Erstellt ein Modell homemit dem Attribut name. Um die aus diesem Befehl generierten Dateien und Codes zu entfernen, können wir verwenden

rails d model Home

3

Sie können alle Dinge zerstören, die auf die gleiche Weise erstellt wurden, außer kleine Änderungen. Für Controller,

rails d controller_name (d stands for destroy)

Für Modell

rails d model_name

Sie setzen einfach d(destroy)statt g(generate)in Ihre Migration.


3

Wenn Sie den Controller lieber manuell löschen möchten:

Für Controller welcome

rm app/controllers/welcome_controller.rb
rm app/views/welcome
rm test/controllers/welcome_controller_test.rb
rm app/helpers/welcome_helper.rb
rm test/helpers/welcome_helper_test.rb
rm app/assets/javascripts/welcome.js.coffee
rm app/assets/stylesheets/welcome.css.scss

3

Sie können Ihre zurücksetzen

rails g/generate controller/model/migration xxx

Ausgabe mit:

 rails d/destroy controller/model/migration xxx

3

Angenommen, ich habe einen Controller mit dem Namen "sample" wie folgt erstellt:

rails generate controller sample

Wenn ich diesen Controller zu zerstören, alles , was ich tun muß, ist Swap generatemit destroy, wie in

rails destroy controller sample.

Wenn Sie die Erzeugung umkehren wollen, alles , was Sie tun müssen, ist Swap generatemit destroy.


3

Wenn Sie Rails verwenden, verwenden Sie rails d controller Users.

Und wenn Sie Zeus verwenden, verwenden Sie zeus d controller Users.

Wenn Sie dagegen git oder SVN verwenden, setzen Sie Ihre Änderungen mit der Festschreibungsnummer zurück. Das geht viel schneller.


3

Sie können a rails generateauf folgende Arten rückgängig machen :

  • Für das Modell: rails destroy MODEL
  • Für den Controller: rails destroy controller_name

1

Um das umzukehren, zerstören wir es einfach. Öffnen Sie die Terminal-Anwendung, wechseln Sie in das Projektverzeichnis und geben Sie Folgendes ein:

rails destroy model CamelCase
rails destroy controller CamelCase

Wo CamelCaseist ein Name eines Modells oder Controllers? Das Modell, die Migration und einige der zugehörigen Testdateien werden entfernt. (Sie können das Ergebnis im Terminalfenster sehen, nachdem Sie den Befehl ausgeführt haben.)


0

Wir verwenden generieren als rails generate app. Das Regenerieren einer generateAnweisung kann also mithilfe der destroyAnweisung rückgängig gemacht werden . Ersetzen Sie einfach generatemit , destroy dh rails generate appgeschrieben werden können als rails destroy app' Schienen erzeugen ____ asSchienen zerstören ____ `


0

Gerüst für ausgewähltes Modell entfernt:

bin/rails d scaffold <AccessControl> //model name

0

Stellen rails generateSie vor dem Zurücksetzen sicher, dass Sie zuerst die Migration zurücksetzen .

Fall 1: Wenn Sie das Gerüst zurücksetzen möchten, führen Sie diesen Befehl aus:

rails destroy scaffold MODEL_NAME

Fall 2: Wenn Sie das Modell zurücksetzen möchten, führen Sie diesen Befehl aus:

rails destroy model MODEL_NAME

Fall 3: Wenn Sie den Controller zurücksetzen möchten, führen Sie diesen Befehl aus:

rails destroy controller CONTROLLER_NAME

Hinweis: Sie können danstelle von auch eine Verknüpfung verwenden destroy.


0

rails generateVerwenden Sie zum Umkehren rails destroy:

rails destroy Model

Siehe " rails destroy" für weitere Informationen.


0

Alle Versionen von Schienen haben ein "Zerstören". Wenn Sie also mit einem Generator ein (zum Beispiel) Gerüst mit dem Namen "Aufgaben" erstellen, müssen Sie Folgendes eingeben, um alle Änderungen dieses Generierungsschritts zu zerstören:

rails destroy scaffold Tasks

Hoffe es hilft dir.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.