我经常需要在我的应用程序中创建分支以进行新的开发。这通常意味着我在我的分支中对我的 Gemfile 进行了 Master 中不存在的更改,因此我最终会在供应商/缓存中缓存的 gem 中出现差异。
我发现提交缓存的 gem 让我很困扰,但我不知道这是否确实是错误的。我应该 .gitignore-ing 这些吗?如果是这样,我应该git rm
缓存的gem文件吗?
我经常需要在我的应用程序中创建分支以进行新的开发。这通常意味着我在我的分支中对我的 Gemfile 进行了 Master 中不存在的更改,因此我最终会在供应商/缓存中缓存的 gem 中出现差异。
我发现提交缓存的 gem 让我很困扰,但我不知道这是否确实是错误的。我应该 .gitignore-ing 这些吗?如果是这样,我应该git rm
缓存的gem文件吗?
TL;DR:这取决于你,但我建议将它们保存在 git 中。
这样做vendor/cache
是允许捆绑,尤其是部署捆绑,以跳过从 rubygems 下载 gem。这显着减少了对红宝石的依赖。
在部署中,您可以指定--local
捆绑程序以完全删除对 rubygems.org 的所有依赖,但前提是这些文件已签入 git。
这很有价值,因为虽然 rubygems.org 是一项出色的服务,但它也不能免受中断的影响。如果没有这些缓存的 gem,rubygems.org 上的中断可能意味着您将无法部署新版本、重新部署或扩展到新机器,直到 rubygems 备份。
还有一个论点是供应商/缓存可以用作 Gemfile.lock 的扩展,将部署 gem 锁定为与开发中使用的相同的二进制文件,而不仅仅是版本相同。
因此,出于实际原因,保持您作为独立于 rubygems.org 的实用、工作应用程序的能力:将它们保存在您的 git 存储库中。