2016-08-16 7 views
0

ファイルのプロパティを要求する方法については、かなりのエラーが発生しています。いくつかの洞察を求めて。ファイルを正しくロードして自動ロードする方法

ようにファイルがあります。

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 

私は、私は次のエラーを取得する方法、method_called_by_modelを呼び出すとき:

NameError: uninitialized constant Model::FooWorker 

を私はapplication.rbに以下を追加した、」didnのドキュメントに従って自動的に読み込まれる必要があるため、app/workersを追加してください。私は、モデル内の作業ファイルをrequire_relativeとき

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

私は、継承されたクラスが不明であることに言及する次のエラーを取得する:

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

はどれ私が何ができるかを任意のアイデアがありますか?

答えて

0

これらのワーカーがディレクトリ内にあるため、これらのワーカーの名前空間を設定する必要があります。

最初に追加した自動ロード呼び出しを削除します。

ファイルの名前とその内部の外観は次のとおりです。

# 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

あなたが提案したように、私はDirectory1 ::前にParentWorkerが誤字だったと思います。エラーの取得、NameError:初期化されていない定数DirectoryWorker :: FooWorker。 – Curt

+0

それはタイプミスでした。完全なエラーメッセージとエラーが発生した行とともに、更新されたコードを投稿できますか? – kcdragon

+0

私は実際にそれを理解しました。まったく私のせいで、directory_worker.rbの代わりにDirectoryWorker.rbというファイル名が間違っていました。 – Curt

関連する問題