我刚刚尝试将我的应用程序部署到 Heroku。它已经工作了很长一段时间,我只是添加了一些新功能。部署后,我收到“应用程序崩溃”错误。heroku logs
显示No such file to load -- nokogiri (LoadError)
。
现在,在我的系统上,我Gemfile.lock
展示了 2 个不同的 nokogiri gems: nokogiri (~> 1.5.0)
,它是的依赖项fog (1.4.0)
,nokogiri (1.5.5-x86-mingw32)
它似乎不是任何东西的依赖项。在平台下是唯一x86-mingw32
的。我的开发计算机是 Windows 7,ruby 1.9.3p194
Heroku toolbalt 自己使用的 Ruby 版本是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,它只是一个依赖项),然后重新部署到 Heroku 而不bundle install
先在我自己的系统上运行。现在应用程序不会崩溃。
我不知道为什么会这样。我不知道如何确保问题不再发生,我只是碰巧得到了一个绝望的补丁。我以后不能有这样的停机时间,或者担心在例行部署中再次发生类似的事情。有人可以解释一下到底出了什么问题以及解决它的正确方法吗?