Rake abgebrochen nicht initialisierte Konstante "Computer"

7

Ich habe ein sehr nerviges Problem mit meinen Migrationen.

Zuerst die Fehlermeldung:

%Vor%

Nun habe ich die Vermutung, dass ein Update, das von einem unserer Admins gemacht wurde, der Grund ist, warum dies jedes Mal passiert. Selbst wenn es überhaupt keine Migrationen gibt!

Was ich getan habe (neben der Suche nach Stack Overflow nach einer Lösung) ist, jede einzelne Datei nach "Computer" zu durchsuchen. Natürlich gibt es einige Dateien, die dieses Wort enthalten, und ich habe sie auf Syntaxfehler und die üblichen Dinge wie fehlende ":" überprüft. Dann bat ich einen Arbeitskollegen um Hilfe (er ist viel besser mit Rubin als ich) und er hat keine Ahnung, alles sieht gut aus.

Ich verwende eine etwas alte Version von Ruby (1.8.7) und Rails (3.0.9), aber ich habe keine Rechte ein Update auf unserem Server zu tun, so habe ich damit umgehen. Und ja, ich habe den Administrator gebeten, ein Update auf 1.9.x und 3.1.x zu machen, aber das kann nicht der Fehler sein, weil es letzte Woche gut funktioniert hat. Es ist also einer dieser Fehler, wo es funktionieren sollte, aber es tut es nicht und ich wette, die Lösung ist einfach wie Trinkwasser, aber ich sehe es nicht!

Irgendwelche Vorschläge?

EDIT: Hier ist die --trace:

%Vor%     
ProblemChild 21.02.2012, 09:40
quelle

2 Antworten

22

Meine Vermutung ist, dass Sie gerade eine Migration namens 20120221123456_computers.rb hinzugefügt haben, und darin haben Sie etwas wie ...

%Vor%

Wenn Rails eine Migration ausführt, wird erwartet, dass die Datei ausgeführt wird, die die Klasse definiert, und dann die Klasse instanziiert wird und #up oder #down für diese Klasseninstanz aufgerufen wird. Woher weiß Rails, welche Klasse instanziiert werden soll? Es soll mit dem Teil des Dateinamens übereinstimmen, der dem numerischen Präfix und dem Unterstrich folgt, so dass für einen Dateinamen wie 20120221123456_computers.rb der Klassenname Computer sein muss.

    
Steve Jorgensen 21.02.2012, 10:44
quelle
0

Wie Sie sagten, grep sagt das Vorhandensein von "Computern" das ist das Problem. Es bedeutet, dass Computer nicht definiert ist, sondern verwendet wird. Die Migration lädt zuerst die App-Umgebung und dann schlägt sie fehl. bcoz Computers ist nicht initialisiert

    
Sandip Ransing 21.02.2012 10:04
quelle