2016-08-16 5 views
0

Ich stoße auf einige Fehler, um die Dateieigenschaft zu bestimmen. Hoffe auf einen Einblick.So fordern Sie Dateien automatisch an und laden sie automatisch

Es gibt Dateien, die als so:

app/models 
    model.rb  
app/workers 
    parent_worker.rb 
    app/workers/directory_1 
     directory_worker.rb 
     foo_worker.rb 
     bar_worker.rb 

class DirectoryWorker < ParentWorker 
end 

class FooWorker < DirectoryWorker 
    def method_called_by_model 
    end 
end 

Wenn ich die Methode aufrufen, method_called_by_model ich die folgende Fehlermeldung erhalten:

NameError: uninitialized constant Model::FooWorker 

ich hinzugefügt haben folgendes application.rb, didn‘ t fügen Sie app/workers hinzu, da es gemäß der Dokumentation automatisch geladen werden sollte.

config.autoload_paths << "#{Rails.root}/app/workers/directory_1" 

Als ich require_relative die Arbeiter Dateien im Modell, das ich die folgende Fehlermeldung mit Bezug auf die geerbte Klasse unbekannt ist:

NameError: uninitialized constant DirectoryWorker 
from project/app/workers/directory_1/FooWorker.rb:2:in `<top (required)>' 

Alle Ideen, was ich tun kann?

Antwort

0

Sie müssen diese Worker mit einem Namespace versehen, da sie sich in einem Verzeichnis befinden.

Entfernen Sie zuerst den Autoload-Anruf, den Sie hinzugefügt haben.

So sollten die Dateien benannt werden und wie sie aussehen sollten.

# app/workers/parent_worker.rb 
class ParentWorker 
end 

# app/workers/directory_1/directory_worker.rb 
class Directory1::DirectoryWorker < ParentWorker 
end 

# app/workers/directory_1/foo_worker.rb 
class Directory1::FooWorker < Directory1::DirectoryWorker 
    def method_called_by_model 
    end 
end 

# app/workers/directory_1/bar_worker.rb 
class Directory1::BarWorker < Directory1::DirectoryWorker 
end 
+0

Wie Sie vorgeschlagen, obwohl ich nehme an, das Directory1 :: vor dem ParentWorker war ein Tippfehler. Fehler erhalten, NameError: nicht initialisierte Konstante DirectoryWorker :: FooWorker. – Curt

+0

Ja, das war ein Tippfehler. Können Sie den aktualisierten Code zusammen mit der vollständigen Fehlermeldung und der Zeile, bei der der Fehler auftritt, posten? – kcdragon

+0

Ich habe es tatsächlich herausgefunden. Total meine Schuld, benannte die Dateien DirectoryWorker.rb anstelle von directory_worker.rb falsch. – Curt

Verwandte Themen