2

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

我不知道为什么会这样。我不知道如何确保问题不再发生,我只是碰巧得到了一个绝望的补丁。我以后不能有这样的停机时间,或者担心在例行部署中再次发生类似的事情。有人可以解释一下到底出了什么问题以及解决它的正确方法吗?

4

1 回答 1

0

添加这个

 PLATFORMS
    x86-mingw32

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

于 2013-03-28T20:27:31.510 回答