35

我经常需要在我的应用程序中创建分支以进行新的开发。这通常意味着我在我的分支中对我的 Gemfile 进行了 Master 中不存在的更改,因此我最终会在供应商/缓存中缓存的 gem 中出现差异。

我发现提交缓存的 gem 让我很困扰,但我不知道这是否确实是错误的。我应该 .gitignore-ing 这些吗?如果是这样,我应该git rm缓存的gem文件吗?

4

1 回答 1

49

TL;DR:这取决于你,但我建议将它们保存在 git 中。

这样做vendor/cache是允许捆绑,尤其是部署捆绑,以跳过从 ruby​​gems 下载 gem。这显着减少了对红宝石的依赖。

在部署中,您可以指定--local捆绑程序以完全删除对 ruby​​gems.org 的所有依赖,但前提是这些文件已签入 git。

这很有价值,因为虽然 ruby​​gems.org 是一项出色的服务,但它也不能免受中断的影响。如果没有这些缓存的 gem,rubygems.org 上的中断可能意味着您将无法部署新版本、重新部署或扩展到新机器,直到 ruby​​gems 备份。

还有一个论点是供应商/缓存可以用作 Gemfile.lock 的扩展,将部署 gem 锁定为与开发中使用的相同的二进制文件,而不仅仅是版本相同。

因此,出于实际原因,保持您作为独立于 ruby​​gems.org 的实用、工作应用程序的能力:将它们保存在您的 git 存储库中。

于 2013-02-13T20:34:52.163 回答