0

lib (Rails アプリ内) にあるファイルを要求しようとしています。

開発中、この行は問題なく動作します。

require "km"

しかし、Heroku では、「読み込むファイルがありません」というエラーが表示されます。

Heroku コンソールを介して、ファイルへのパスを指定するという点でいくつかのバリエーションを試しました。例えば:

require "lib/km"
require "./lib/km.rb"

などなど。これは、これらの質問からの回答に基づいており、問題がファイルへのパスを指定していることを示唆しています。

Rails、Heroku がライブラリをロードしない

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 の環境内のファイル名を確認することでした。

4

1 に答える 1