rails5でautoload問題を解決する

やられましたよ。

rails4 → rails5へのアップデートをしていたのですが、libpathの配下のものが読まれない。

config/application.rb

    config.autoload_paths += %W(#{config.root}/lib)

問題ないだろ。

そう思っていましたよ。

どうやら、この作業が無効になっています。

2.6 production 環境での起動後は自動読み込みが無効になる 今後Railsがproduction 環境で起動されると、自動読み込みがデフォルトで無効になります。

アプリケーションの一括読み込み(eager loading)は起動プロセスに含まれています。このため、トップレベルの定数についてはファイルをrequireしなくても問題なく利用でき、従来と同様に自動読み込みされます。

トップレベルより下で、実行時にのみ有効にする定数(通常のメソッド本体など)を定義した場合も、起動時に一括読み込みされるので問題なく利用できます。

ほとんどのアプリケーションでは、この変更に関して特別な対応は不要です。めったにないと思われますが、productionモードで動作するアプリケーションで自動読み込みが必要な場合は、Rails.application.config.enable_dependency_loadingをtrueに設定してください。

Rails アップグレードガイド | Rails ガイド

ほとんどのアプリケーションでは、この変更に関して特別な対応は不要です。

いや、だいぶ影響あるだろ。

みんな使ってますよ!

ということで解決策

config.enable_dependency_loading = true

これはアップグレードガイドに書いていますね。

他にもやり方があります。

参考

qiita.com

危ない危ない・・・。