質問: TestService.new("test1") TestServiceが読み込まれていないと思い。 config/application.rbに config.autoload_paths += %W(#{config.root}/lib) を追加したところエラーがでなくなりました。 しかし、 TestServiceはapp/services/test_service.rbにあり プロジェクト直下のlibとは関係がありません。 autoload調査コマンドを打ったところ以下が出力されました。 ``` $ bundle exec rails r 'puts ActiveSupport::Dependencies.autoload_paths' /~/app/assets /~/app/channels /~/app/controllers /~/app/controllers/concerns /~/app/helpers /~/app/jobs /~/app/mailers /~/app/models /~/app/models/concerns /~/app/services /~/test/mailers/previews ``` app/servicesのpathが入っていたのでautoload対象であることがわかりました。 疑問なのが、どうしてconfig.autoload_paths += %W(#{config.root}/lib)を 記述したところ表題のエラーが消えるのかということです。 エラーの対策として、上記コードの記述がどうしても腑に落ちなかったので 質問させていただきました。 *version Rails 5.1.4 ruby 2.4.2 unicorn:development
回答: `app/service`はデフォルトで存在するフォルダではありませんが、**フォルダ**を追加した場合には、再起動しないと、新設フォルダ内のオートロードが効かないことがあります。 あと、Rails 4.2での経験ですが、ロケールのyamlファイルは、既存ファイルの変更はオートロードされるものの、新規にファイルを追加した場合には再起動しないとオートロードが反映されません。