【问题标题】:Why does Heroku's bundler update the gems everytime I push?为什么 Heroku 的捆绑器每次推送时都会更新 gem?
【发布时间】:2012-11-14 11:58:01
【问题描述】:

我在 Heroku 上运行多个 Rails 应用程序。我使用大多数标准,包括 Gemfile 和 Bundler。 Gemfile.lock 是用 Git 提交的。

但是,当我推送到 Heroku 时,它似乎只是从新运行 bundle install --without development:test --path vendor/bundle --binstubs bin/ 而不是读取 Gemfile.lock,这意味着它每次推送时都会更新 gem,导致我的开发和生产环境之间存在差异。

我没有收到任何错误消息,但这不是我所期望的行为。我做错了什么?

谢谢!

【问题讨论】:

  • 你应该在你的 gemfile 中写下你期望的 gem 版本
  • 我真希望 heroku 可以减少他们的推送时间。
  • bundle install 使用 Gemfile.lock 和 Gemfile 中指定的版本,除非发生了变化,否则它不会更新 gems。例如Gemfile 指定新的 gem 或 gem 的不同版本。

标签: ruby-on-rails heroku bundler


【解决方案1】:

我认为它是“从头开始构建一切,以防开发人员系统有任何差异”理念的一部分。
例如,如果您正在运行“ibuntu”(编造)并且您的环境由于系统上实现 ruby​​ 的方式而在 gem 之间具有不同的依赖关系。从头开始构建系统中的所有内容并确保满足其堆栈中出现的任何依赖项会更安全。

【讨论】:

  • 好吧,那太糟糕了...我遇到了几次麻烦,因为它更新到的新 gem 有问题,或者只是用新配置完全重构了。
  • Bundler 允许您冻结正在使用的 gem 的版本。查看 gembundler.com/gemfile.html 的 Bundler 语法。这个想法是您可以使用 gem "rack", ">=1.0"gem "thin", "~>1.1" 之类的内容指定版本
  • 是的,不过我觉得这有点矫枉过正......我想没有其他选择了。
猜你喜欢
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 2023-04-10
相关资源
最近更新 更多