rails ändert schema.rb ohne Grund

8

Jedesmal, wenn ich% co_de starte, entscheidet sich% rails dafür, meine schema.rb-Datei zu ändern. In einigen Fällen ist dies völlig vernünftig, aber in einigen anderen Fällen scheint es, dass es ohne Grund geschieht. Der Fall, über den ich verwirrt bin, ist, wenn ich eine neue Migration und eine neue Version von schema.rb von git abrufe und dann rake db:migrate starte. Da die neue Version der Datei schema.rb mit dieser Migration geliefert wurde, sollte ich schema.rb nicht aktualisieren. Schienen ändert es jedoch immer noch jedes Mal. Wenn das passiert, finde ich unglaublich dumme Änderungen wie:

%Vor%

bis

%Vor%

Wenn dies passiert, führe ich einfach rake db:migrate aus und mache weiter mit meinem Leben, aber es irritiert mich bis zum Ende. Gibt es einen Grund, warum es das tut, und wie kann ich es davon abhalten?

EDIT: Hier ist ein Auszug aus einem Diff

%Vor%     
wesdotcool 12.02.2013, 21:54
quelle

2 Antworten

6
  

Da die neue Version der Datei schema.rb mit dieser Migration geliefert wurde, sollte ich schema.rb nicht aktualisieren.

Dies ist ungenau.

Jedes Mal, wenn Rails eine Migration ausführt, wird die Datei schema.rb mithilfe der Datenbank als Quelle aktualisiert. Es sucht nicht nach der vorhandenen schema.rb -Datei, sondern verwendet nur Informationen aus der Datenbank und überschreibt sie.

Es scheint, dass das eigentliche Problem darin besteht, dass das Ausführen der gleichen Migration in zwei verschiedenen Umgebungen (verschiedene Kombinationen von Ruby, Rails, MySQL, Betriebssystemen) zu unterschiedlichen Ergebnissen führen kann, wenn eine schema.rb -Datei generiert wird.

Die Lösung besteht darin, sicherzustellen, dass jeder, der Code eincheckt, die gleichen Softwareversionen verwendet, so weit dies möglich ist. Und wenn es nicht möglich ist (weil dies ein Unterschied zwischen Windows und Linux oder Mac ist und Sie nicht das Gefühl haben, Ihr Betriebssystem zu ändern), müssen Sie sich nur mit den Unannehmlichkeiten herumschlagen.

    
benzado 12.02.2013, 22:36
quelle
0

Für mich hat die Lösung zuerst rake db:schema:load gemacht. Und als rake db:migrate aufhörte mein schema.rb ohne Grund zu ändern.

ACHTUNG: rake db:schema:load löscht ALLE Ihrer vorhandenen Daten und erstellt die Datenbank in Bezug auf das vorhandene schema.rb neu.

    
scaryguy 01.09.2016 00:19
quelle