Immer wenn ich irgendeinen Code ändere (außer Ansichten und vielleicht einige Controller), bekomme ich:
Eine Kopie von MyModel wurde aus dem Modulbaum entfernt, ist aber immer noch vorhanden aktiv!
und ich muss meinen Dev-Server neu starten.
Ich habe die Interwebs zu diesem Thema durchgekämmt, und die am häufigsten genannte Ursache ist der Aufruf von MyModel.some_method
aus einer Klasse, die nicht automatisch geladen wird. Ich habe Klassen in lib
, die wie MyModel.find
und MyModel.some_scope
aufrufen; Ich habe Rails jedoch so konfiguriert, dass jede Datei in der lib
-Baumstruktur automatisch geladen wird. Ich ging so weit, das Autoloading von allem zu konfigurieren, einschließlich jeder Datei irgendwo unter app
und sogar config
.
Eine Tatsache, die relevant sein kann, ist, dass MyModel
die Basis einer STI-Hierarchie ist. Es hat zwei Kinder, und eines davon hat ein Kind.
Das macht mich verrückt, weil ich keine Ideen mehr habe, wie ich es beheben kann. Mittlerweile ist die Produktivität in die Hölle gegangen.
Wie kann ich die Quelle dafür finden?
Dies bedeutet, dass Ihre App immer noch Verweise auf die alte Version enthält. Ich denke, dass es von der Stapelspur genau dort sichtbar sein sollte, wo es referenziert wird.
Fügen Sie lib auch nicht zum Autoload hinzu, wenn es automatisch geladen werden sollte. Ich weiß nicht, was dieses Modell ist, aber möglicherweise sollten Sie es in app / services oder app / models (egal ob ActiveRecord oder nicht) einfügen.
Ich stieß auf das gleiche Problem. Im Grunde wird es durch alte Referenzen verursacht, wenn Rails versucht, neu zu laden, höchstwahrscheinlich passieren verschachtelte Module / Klassen wie folgt:
%Vor%Sie müssen es aktualisieren auf:
%Vor% In Ihrem Fall muss also jedes Modul / jede Klasse NestedModuleOrClass
unter MyModel
auf MyModel::NestedModuleOrClass
aktualisiert werden.
Versuchen Sie es und lassen Sie mich wissen, ob es für Sie funktioniert oder nicht.
Tags und Links ruby ruby-on-rails-4.1