Wenn wir
ausführen bundle exec rake spec
es Fehler beim Versuch, die Umgebung mit dem Fehler zu laden:
%Vor% Die Datei app/models/links/Category.rb
definiert tatsächlich Links::Category
. Noch seltsamer ist, dass ein Fehler nicht auftritt, wenn man unter Wächter und Spork läuft (der Standard, wie wir Tests ausführen):
bundle exec guard -i
Führt die Testsuite wie erwartet ohne Probleme aus.
Spork ist so konfiguriert, dass es rspec ausführt, daher bin ich etwas verwirrt darüber, warum das Ausführen von rake spec
manuell dies verursachen würde.
Ich habe ähnliche Probleme gesehen, die anscheinend gelöst wurden, indem ich autoload_paths
ansah und nachprüfte, ob es lib
und lib/**
enthielt, aber unser Programm macht nichts Ungewöhnliches mit autoload_paths, die ich sehen kann. Unser autoload_paths
sieht so aus (definiert in application.rb):
(Wir verwenden bundle exec rake spec
auf unserem CI-Server, um die Tests auszuführen, anstatt sie zu schützen, die wir auf unseren Entwicklungsmaschinen verwenden.)
Wird category.rb geladen
? Hinzugefügt puts 'Hey'
am Anfang von category.rb und puts 'Yo'
am unteren Rand, und wenn die Spezifikationen ausgeführt werden, fügt die Ausgabe es hinzu:
app / models / links / link.rb :
%Vor%app / models / links / category.rb :
%Vor%spec_helper.rb
%Vor%** Einfachstes category_spec.rb, das den Fehler * verursacht:
%Vor%Rechenausführung :
%Vor% Wenn Sie Links :: Category in Ihre Spezifikation schreiben, lädt Rails wahrscheinlich automatisch das Links
-Modul und Links::Category
-Klasse.
Offenbar kann dieser seltsame Fehler auftreten, wenn Sie das Modul Links
nicht richtig definieren. Sehen Sie sich die obigen Kommentare an, um mehr darüber zu erfahren, wie wir das Problem gelöst haben.
Tags und Links ruby ruby-on-rails rspec