我有一个我在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中创建的,然后抱怨它在几秒钟后丢失。为什么会这样?我该如何解决?
答案 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上,新宝石应该正确安装。