先日、他の人の Rails アプリケーションがローカルだと動くのになぜか Heroku で動かないってことがありました。
WEB で開いても Application Error ってなるだけ。
とりあえず heroku logs
まあ、こういう場合はとりあえず heroku logs
ですね。
ちょっと出力例がないのですが、application crashed 的なことしか書いておらず、詳細がありませんでした。
heroku logs
のログレベルを変更する
heroku logs
の出力が少ない場合には
heroku config:add LOG_LEVEL=DEBUG
とやるとログの出力レベルを DEBUG まで下げられます。
config.ru がないらしい
すると、heroku logs
と叩いたときに
configuration /app/config.ru not found
と出てきました。確かに Rack のアプリケーションだと必要になると公式ドキュメントには書いてありますね…。
このファイル、Rails のアプリケーションだと、テンプレートのものが生成されるようになっており、変更することはあまりないと思うので、とりあえず他の Rails アプリからコピーしてきました。
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
run Rails.application
いつもの
git add config.ru
git commit -m 'Add config.ru'
git push heroku master
としたところ、直りました!
最後にログレベルも除いて落としておきましょう。
heroku config:remove LOG_LEVEL
config.ru はマスト?
とりあえず上で問題は直ったのですが、Rails アプリケーションの場合は Gemfile.lock
の内容を見るとドキュメント に書いてあるので、config.ru
がなくても Rails アプリケーションだと認識して、うまいことやってくれる、とも取れるんですがねー。
まあ、ドキュメントの記述が少し足りないだけで、Rack アプリだから、config.ru
は当然必要でしょってだけかもしれません。