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

问题描述 投票:0回答:3

我有几个副项目,要么仍在开发中,要么正在为朋友和家人使用。 例外(modulecounts.com)非常微不足道。

在工作中,在一个更大的组织中,我们似乎总是制定规则,禁止过于频繁地更新 gem。 它成为一个为特定冲刺安排的故事。 它必须与运营部门协调,以确保他们准备好更新生产环境等。

当我是唯一的开发人员时,所有协调开销都消失了,但更新 gem 仍然存在风险。 也许这些新版本无法正常工作。

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

你做什么? 快乐的媒介是什么?

ruby rubygems dependencies
3个回答
3
投票

更频繁地更新宝石的好处是您可以获得改进。例如,安全性改进或速度改进。此外,这意味着您的代码是最新的,通常更容易找到较新的 gem 版本的文档。此外,保持 Gems 最新意味着您正在使用较新版本的 API,例如 Facebook 或 Twitter。使用较新的 API 意味着速度的提高并领先于弃用。当然,正如您所指出的,这样做也有缺点,记住这一点很重要。以下是我喜欢遵循的一些建议:

  1. 了解您正在使用的较新的 gem 版本。阅读发行说明。如果您使用的是记录良好的 gem,您应该能够了解此版本的 gem 中的新增内容以及您是否需要处理弃用问题。
  2. 在 Gemfile 中使用 gem 版本。我最喜欢的运算符是 ~>。 ~> 2.1 意味着 >= 2.1 但是 < 2.2, this means you can ensure that your gems stay up to date without having to worry as much about deprecations because you can remain within specific gem versions. This often means you'll continue to receive security updates for a specific gem version while retaining the same command and function formats.
  3. 不要立即升级关键项目。最好在新的 gem 版本发布后稍等一下再升级。在您的开发分支中测试新的 gem 版本或等待查看其他人是否发现错误。及时了解新 gem 版本的进展。
  4. 编写测试。不要直接测试 gems,但要确保依赖于 gems 的代码按照您的预期工作。您在此处获得的覆盖范围越多,尤其是关键功能,就越容易判断新的 gem 版本是否仍在运行。
  5. 升级 gem 后测试您的应用程序。通常最好创建一个新的 git 分支并更新该分支中的 gem 以确保您的代码仍然可以运行。您甚至可以在测试或升级代码时使分支在多个开发周期或冲刺中保持活动状态,只有当您确信 gem 升级是一个不错的选择时,才将其合并回主分支。

我的偏好实际上是尽可能保持最新的 gems,同时确保我的发展不会因为不断升级而受到很大阻碍。我尝试按照适合我的团队的时间表进行升级,例如每两周一次,同时密切关注安全升级。采用自动方式设置生产环境也很有帮助。 Bundler 对此非常有用,因为您的 Gemfile.lock 可以确保您的生产环境运行与开发环境相同的 gem。


0
投票

我认为每次开始工作时都没有令人信服的理由进行更新,除非您想从修复与更新的 gem 的不兼容性开始工作。

当我开发一些东西时,我通常每周或每两周更新一次。我不想使用过时的第三方代码来启动。然而,一旦投入生产,审查 gem 更新所需的工作量让我不太可能想要更新。有时你的测试不会发现改变的东西,然后你也不会。

因此,作为一个快乐的媒介,如果这是您的项目并且更新相对安全,请经常进行,但不要强迫自己每天都进行。如果它是一个生产应用程序,您更有可能破坏某些内容,或者您在团队中工作,那么除非确实需要,否则更新时要更加谨慎。

哦,我认为 Rails 等人无论何时更新都是相当安全的,只要您阅读发行说明并进行任何所需的更改即可。


0
投票
  • 上传需要更多时间并且无法一次上传更多项目
  • 每次都要交RITES检查费用很贵
  • 对于小微创业者来说是负担
  • 在许多招标中,规格仅对大型工业有利
  • 不免除 MSME 单位的 EMD
  • 不遵循从 MSME 单位购买的预订

要求评判和帮助中小微企业

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.