lib (Rails アプリ内) にあるファイルを要求しようとしています。
開発中、この行は問題なく動作します。
require "km"
しかし、Heroku では、「読み込むファイルがありません」というエラーが表示されます。
Heroku コンソールを介して、ファイルへのパスを指定するという点でいくつかのバリエーションを試しました。例えば:
require "lib/km"
require "./lib/km.rb"
などなど。これは、これらの質問からの回答に基づいており、問題がファイルへのパスを指定していることを示唆しています。
Heroku コンソールが /lib にファイルをロードしていませんか?
また、ここで提案されているこの autoload 行を追加しようとしましたが、解決していないようです。
config.autoload_paths += Dir["#{config.root}/lib/**/"]
http://www.williambharding.com/blog/technology/rails-3-autoload-modules-and-classes-in-production/
Railsにlibファイルを見つけるように指示するにはどうすればよいですか? また、開発と本番での require の動作に違いがあるのはなぜですか?
アップデート:
この問題は git に関連していることが判明しました。元のファイル名は「KM.rb」で、後に「km.rb」に変更されました。しかし、git はケースの変更を認識しなかったため、変更が Heroku 環境にプッシュされることはありませんでした。
重要なステップは、Heroku コンソールで Ruby Dir コマンドを使用してファイル構造を調査し、Heroku の環境内のファイル名を確認することでした。