为什么Heroku不会在Windows中接受我的Gemfile.lock?

时间:2011-05-10 17:53:01

标签: ruby-on-rails ruby windows heroku

我有一个我在Heroku上部署的rails应用程序。我正在使用几台不同的机器,我注意到当我添加新的依赖项(以便重建Gemfile.lock)并在我家的Windows计算机上执行bundle install时,推送到Heroku失败,出现以下错误:

   Unresolved dependencies detected; Installing...
   Windows Gemfile.lock detected, ignoring it.
   You have modified your Gemfile in development but did not check
   the resulting snapshot (Gemfile.lock) into version control
   ...

Gemfile.lock受版本控制,但Heroku显然选择忽略它,因为它是在Windows中创建的,然后抱怨它在几秒钟后丢失。为什么会这样?我该如何解决?

5 个答案:

答案 0 :(得分:24)

我通过打开Gemfile.lock并删除以下两行来修复我的行:

PLATFORMS
  x86-mingw32

所以现在我只需要创建一个捆绑包然后从锁定文件中删除它的脚本。

答案 1 :(得分:9)

像上面评论的马特:

问题在于Bundler为Windows创建了不同的Gemfile.lock。唯一的解决方案是在* NIX系统上创建和提交锁文件。

我建议创建一个运行的虚拟机,例如Ubuntu - 可能正在使用Virtual Box。您甚至可以使用现成的虚拟机 - 例如here

答案 2 :(得分:4)

来自Heroku Docs

  

如果Gemfile的平台部分包含Windows条目,   例如 mswin mingw ,那么Gemfile.lock文件将被忽略。

答案 3 :(得分:0)

刚刚解决这个问题一段时间。

我将我的gemfile修剪回只是rails并仍然有问题。然后,考虑到heroku今天要求更新heroku gem,我仔细研究了heroku的变化。

似乎1.9.2 ruby​​“bamboo”堆栈现在是默认堆栈 - 我的应用程序仍在1.8.7堆栈上运行。所以我运行了“heroku stack:migrate bamboo-mri-1.9.2”并将堆栈更新为1.9.2 - 这不是我想做的事情,但你知道是什么,它解决了上面的问题。

当然,我不想进入1.9.2堆栈,所以我迁移回1.8.7堆栈,并再次正确安装。所以我认为这是一个解决方法 - 可能是一个过于复杂的解决方案 - 但它似乎“冲洗”任何错误是heroku端。因为我在本地所做的一切(我从StackOverflow文章中尝试过很多东西)都没有任何效果,推送只是如上所述。

所以是的,这解决了它。也不需要太长时间。但怀疑更多知识渊博的开发人员可能会发现更好的解决方法!

答案 4 :(得分:-1)

确保在安装捆绑包后提交Gemfile.lock的更改。在你的下一个push到Heroku上,新宝石应该正确安装。