2017-07-04 6 views
0

私はいくつかのクラス(サービス)を作成したapp /ディレクトリに "services"ディレクトリを作成しました。今ではこのようになります:今のところRoR autoloadサブディレクトリ

-app 
    -services 
     -class1 
     -class2 
     -class3 
     -class4 

、私は設定/ spring.rbに

%w(
    .ruby-version 
    .rbenv-vars 
    tmp/restart.txt 
    tmp/caching-dev.txt 
    app/services 
    app/errors 
).each { |path| Spring.watch(path) } 

をアプリ/サービスを追加しているので、サービスの私のクラスがロードされます。

しかし、今、私はこれをしたい:

-app 
    -services 
     -dir1 
     -class1 
     -class2 
     -dir2 
     -class3 
     -class4 

Iましたエラー:

初期化されていない一定のTransactionService :: AuthorizeRequest

どのように自動ロードdirとサブディレクトリ?

答えて

1

Railsはdirnames &ファイル名で名前空間を推測しようとします。

module TransactionService 
    class AuthorizeRequest 
    end 
end 

app 
- services 
-- transaction_service 
--- authorize_request.rb 

あなたのクラスsouldは、次のようになります。だから、TransactionService :: AuthorizeRequestクラス名を持っている、あなたは正確に次のような構造を持っている必要があります