Eine Kopie von MyModel wurde aus dem Modulbaum entfernt, ist aber immer noch aktiv

9

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?

    
Tim Scott 31.01.2015, 00:37
quelle

2 Antworten

3

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.

    
mrbrdo 20.04.2015 11:04
quelle
1

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.

    
Tian Chen 01.02.2016 22:26
quelle

Tags und Links