为什么heroku应用程序崩溃说“没有这样的文件加载 - nokogiri(LoadError)”?

时间:2012-08-01 01:24:31

标签: ruby-on-rails heroku nokogiri

我刚尝试将我的应用部署到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在我自己的系统上。现在应用程序不会崩溃。

我不知道为什么会这样。我不知道如何确保问题不再发生,我只是碰巧遇到了绝望的补丁。我不能在将来遇到这种停机时间,或担心这种情况再次发生在例行部署中。有人可以解释一下实际上是错误的吗?正确的解决方法吗?

1 个答案:

答案 0 :(得分:0)

添加此

 PLATFORMS
    x86-mingw32

到您的Gemfile。然后Heroku会忽略你的Gemfile.lock,因为windows有不同的依赖关系。