您多久更新一次未发布项目的宝石?

时间:2011-02-12 15:04:45

标签: ruby rubygems dependencies

我有几个侧面项目要么仍在开发中,要么为朋友和家人而活。例外(modulecounts.com)非常简单。

在工作中,在一个更大的组织中,似乎我们总是制定规则来反对更新宝石。它成为一个特定冲刺的故事。它必须与Ops协调,以确保他们准备好更新生产环境等。

当我是唯一的开发者时,所有协调开销都消失了,但更新宝石仍有风险。也许这些新版本不会正常工作。

所以...总是这样做更好吗?用“gem update”开始每个开发会话并从那里开始?或者我应该等到我即将上线并进行一次重大更新,希望在后端丢失的任何时间都可以弥补在整个开发过程中没有多少时间损失的时间?

你做什么的?什么是幸福的媒介?

2 个答案:

答案 0 :(得分:3)

更频繁更新宝石的好处是可以获得改进。例如,安全性改进或速度改进。此外,这意味着您的代码更新,通常更容易找到更新的宝石版本的文档。此外,保持您的宝石更新意味着您正在使用较新版本的API,例如Facebook或Twitter。使用较新的API可以提高速度并保持领先于弃用。当然,正如你所指出的,这有不足之处,重要的是要记住这一点。以下是我想要遵循的几个指示:

  1. 了解您正在使用的较新的宝石版本。阅读发行说明。如果你使用记录良好的宝石,你应该能够找到这个gem版本中的新内容,以及你是否必须处理弃用。
  2. 在Gemfile中使用gem版本。我最喜欢的运营商是〜>。 〜> 2.1表示> = 2.1但是< 2.2,这意味着您可以确保您的宝石保持最新,而不必担心折旧,因为您可以保留在特定的宝石版本中。这通常意味着您将继续接收特定gem版本的安全更新,同时保留相同的命令和函数格式。
  3. 不要立即升级关键项目。在升级之前发布新的gem版本时,最好等一下。在开发分支中测试新的gem版本或等待其他人发现错误。及时了解新宝石版的进展情况。
  4. 写测试。不要直接测试宝石,但要确保依赖于宝石的代码按预期工作。您可以获得的覆盖范围越多,特别是对于关键功能,就越容易判断新的宝石版本是否仍在运行。
  5. 升级gem后测试您的应用程序。创建一个新的git分支并更新该分支中的gem以确保您的代码仍然可操作通常很好。在测试或升级代码时,您甚至可以为多个开发周期或冲刺保持活动分支,只有在您确信宝石升级是一个不错的选择时才将其合并回主分支。
  6. 我的偏好是尽可能保持与宝石的最新状态,同时确保不断升级不会妨碍我的开发。我尝试按照适用于我的团队的计划升级,例如每两周升级一次,同时密切关注安全升级。它还有助于自动设置生产环境。 Bundler非常适合这一点,因为您的Gemfile.lock可以确保您的生产环境与开发环境运行相同的gem。

答案 1 :(得分:0)

我不认为每次开始工作都会有一个令人信服的论据,除非你想开始修复与更新的宝石不兼容的工作。

当我正在开发某些东西时,我通常每周或每两周更新一次。我宁愿不推出过时的第三方代码。但是,一旦它投入生产,审查宝石更新所需的工作量使我不太可能想要更新。有时你的测试不会发现变化的东西,然后你也不会。

作为一个幸福的媒介,如果它是你的项目并且相对安全地更新,那么经常这样做,但不要强迫自己每天都这样做。如果它是一个生产应用程序,你有更高的机会破坏某些东西,或者你在团队中工作,除非你真的需要,否则要更加谨慎。

哦,我投票认为只要您阅读发行说明并进行所需的更改,Rails等人在任何时候都可以更新。