【问题标题】:Why won't Heroku accept my Gemfile.lock in Windows?为什么 Heroku 在 Windows 中不接受我的 Gemfile.lock?
【发布时间】:2011-08-22 16:36:51
【问题描述】:

我有一个部署在 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 中创建的,然后在几秒钟后抱怨它丢失了。为什么会这样?我该如何解决?

【问题讨论】:

  • Windows 与 *nix 上的 CR/LF 有什么关系?
  • 也许吧?从推送失败的输出来看,Heroku 似乎是故意忽略它。
  • 捆绑器是否可能选择预编译的 Windows 二进制文件作为依赖项并将它们列在 Gemfile.lock 中?
  • 看看问题“Bundler 是否可以在 Windows 上工作?”这里:engineyard.com/blog/2011/bundler-pro-tip 看起来可能与您的问题有关。

标签: ruby-on-rails ruby windows heroku


【解决方案1】:

来自Heroku Docs

如果 Gemfile 的平台部分包含 Windows 条目, 如 mswinmingw,则 Gemfile.lock 文件将被忽略。

【讨论】:

  • 这对我有帮助。列出了一个 Sqlite3 gem,它是一个 mingw 版本,幸运的是它可以被删除,因为我没有使用 sqlite
【解决方案2】:

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

PLATFORMS
  x86-mingw32

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

【讨论】:

  • 还值得仔细查看是否有任何 Windows 版本的 gem 潜入您的 Gemfile.lock。 (例如...-x86-mingw32)
  • 这个答案是最好的,谢谢-今天早上挣扎了一个小时,删除这一行效果很好。
  • 谢谢杰里米,我的朋友,你的窍门,额外的啤酒
【解决方案3】:

刚刚解决了这个问题。

我将我的 gemfile 修整回了 rails ,但问题仍然存在。然后,认为 heroku 今天要求更新 heroku gem,我仔细查看了 heroku 的变化。

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

当然,我不想使用 1.9.2 堆栈,所以我迁移回 1.8.7 堆栈,并且再次正确安装。所以我认为这是一种解决方法 - 可能是一个过于复杂的解决方法 - 但无论错误是heroku方面的,它似乎都“刷新”了。由于我在本地做的任何事情(我从 StackOverflow 文章中尝试了很多东西)都没有任何效果,所以推送就像上面一样一直失败。

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

【讨论】:

  • 刚刚又遇到了这个问题。谷歌搜索了一下。没有答案修复它 - 然后在我意识到我正在关注我自己的帖子之前就通过了这个!所以,是的,对我来说仍然是个谜,但这是我能找到的唯一方法来解决狡猾的 Gemfile.lock 兼容...
【解决方案4】:

就像上面评论的马特:

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

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

【讨论】:

  • 真的没有别的办法了吗?这很荒谬。 Heroku 的人至少应该在他们的文档中包含这个。我找不到任何关于它的信息。非常感谢您的回答 - 它解决了问题!
  • 我刚遇到同样的问题,文档中仍然没有任何内容。很奇怪,而且确实让 heroku 看起来对使用他们服务的 Windows 用户不感兴趣。
  • 这就是我不经常使用 linux 的原因。做事的方法有一百万种,如果你没有选择正确的方法,那你就完蛋了。开发人员之间没有标准。
【解决方案5】:

确保在安装包后提交Gemfile.lock 的更改。在您下一个 push 到 Heroku 时,应该正确安装新的 gem。

【讨论】:

  • Genfile.lock 已提交。当我在 Windows 上时,它没有帮助。
  • 这个答案没有解决问题。
猜你喜欢
  • 1970-01-01
  • 2016-12-10
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 2016-07-09
  • 2017-08-01
相关资源
最近更新 更多