アプリを Heroku にデプロイしようとしました。それはかなり長い間機能してきましたが、いくつかの新しい機能を追加しています。デプロイすると、「App Crashed」エラーが発生しました。heroku logs
示しNo such file to load -- nokogiri (LoadError)
た。
さて、私のシステムでは、 2 つのGemfile.lock
異なる nokogiri gemsが表示されました。プラットフォームの下は のみでした。私の開発用コンピューターは Windows 7 で、Heroku toolbalt 自体が使用する Ruby バージョンは.nokogiri (~> 1.5.0)
fog (1.4.0)
nokogiri (1.5.5-x86-mingw32)
x86-mingw32
ruby 1.9.3p194
heroku-toolbelt/2.30.1 (i386-mingw32) ruby/1.9.2
Bundler のバージョンは最新で、Heroku ツールベルトのバージョンも最新でした。いくつかのフォーラム投稿のアドバイスに従って、削除Gemfile.lock
して再デプロイしようとしましたが、アプリはまだクラッシュしました。
Heroku は適切なバージョンの nokogiri にバンドルされていなかったようですが、Windows を使用していたためにそれを無視していました。私が修正された方法はgem 'nokogiri', '~> 1.5.5'
、gemfile に追加し (私のアプリは nokogiri を明示的に必要としませんが、依存関係にすぎません)、bundle install
最初に自分のシステムで実行せずに Heroku に再デプロイすることでした。これで、アプリはクラッシュしなくなりました。
なぜこれが機能したのかわかりません。問題が再発しないようにする方法がわかりません。たまたま、絶望的なパッチで運が良かっただけです。今後このようなダウンタイムが発生することはありません。また、定期的なデプロイでこのようなことが再び発生することを心配することもできません。誰かが実際に何が間違っていたのか、それを解決する正しい方法を説明できますか?