我刚尝试将我的应用部署到Heroku。它已经工作了很长一段时间,我只是添加了一些新功能。部署后,我收到了“App Crashed”错误。 heroku logs
显示No such file to load -- nokogiri (LoadError)
。
现在,在我的系统上,我的Gemfile.lock
显示了2个不同的nokogiri宝石:nokogiri (~> 1.5.0)
,fog (1.4.0)
和nokogiri (1.5.5-x86-mingw32)
的依赖关系,似乎不是依赖关系任何事情。在平台下只有x86-mingw32
。我的开发计算机是带有ruby 1.9.3p194
的Windows 7,而Heroku工具用于自身的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
在我自己的系统上。现在应用程序不会崩溃。
我不知道为什么会这样。我不知道如何确保问题不再发生,我只是碰巧遇到了绝望的补丁。我不能在将来遇到这种停机时间,或担心这种情况再次发生在例行部署中。有人可以解释一下实际上是错误的吗?正确的解决方法吗?
答案 0 :(得分:0)
添加此
PLATFORMS
x86-mingw32
到您的Gemfile。然后Heroku会忽略你的Gemfile.lock
,因为windows有不同的依赖关系。