Warum hat 'rake db: drop' einen 0-Exit-Status und löst keinen Fehler aus, wenn es fehlschlägt?

9

Ich war überrascht zu entdecken, dass, wenn rake db:drop (und vermutlich Rails andere integrierte Raketasks) fehlschlägt, der Bash-Statuscode 0 ist.

%Vor%

Vielleicht ist es noch überraschender, dass es nicht einmal zu einem Fehler kommt, wenn die Task von Rails aus aufgerufen wird.

%Vor%

Ist das beabsichtigt? Das scheint in der Quelle zu liegen Rufen Sie einfach execute "DROP DATABASE IF EXISTS #{quote_table_name(name)}" auf. Dies sollte bei einem Fehler zu einem Fehler führen . Was vermisse ich?

    
Simon Lepkin 05.04.2016, 23:54
quelle

1 Antwort

1

Dies ist ein in Rails 5 behobenes Problem: PR # 19924 Explizites Beenden mit Status "1" für Fehler beim Erstellen und Löschen

Beste Lösung wäre es, Rails 5 zu verwenden. :) Ansonsten steckst du fest mit einem von:

  • Überprüfen Sie, ob die db-Datei auf andere Weise gelöscht wurde (andere Fehler konnten nicht erkannt werden).
  • Erfassen Sie die stderr-Ausgabe und inspizieren Sie
  • Monkeypatch ActiveRecord :: Aufgaben :: DatabaseTasks :: drop
Kris Kumler 13.04.2016, 20:06
quelle