在Rails 3.2应用程序中,将vendor/cache的内容包含在Git中是否可行?

38

我经常需要为新开发创建应用程序分支。这通常意味着我的分支中的Gemfile有变化,而Master中没有,因此我会在vendor/cache中的缓存 gem 中得到不同的结果。

我觉得烦人的是我要提交缓存的gem,但我不知道是否正确。我应该.gitignore这些吗?如果是这样,我应该使用git rm删除已缓存的gem文件吗?

1个回答

52
TL;DR: 我建议将它们保存在 git 中,因为这样可以降低对 rubygems 的依赖性,并避免 rubygems.org 宕机影响部署。 vendor/cache 的作用是允许捆绑 gems,尤其是部署捆绑,以跳过从 rubygems 下载 gems。这显著减少了对 rubygems 的依赖性。
在部署时,如果这些文件被检入 git,则可以向 bundler 指定 --local 来完全消除对 rubygems.org 的所有依赖性。
这很有价值,因为尽管 rubygems.org 是一个很棒的服务,但它并不免于停机。如果没有这些缓存的 gem,而 rubygems.org 宕机,那么您可能无法部署新版本、重新部署或扩展到新的机器上。
另外,也有一种论点认为,vendor/cache 可以用作 Gemfile.lock 的扩展,将部署 gems 锁定为与开发中使用的 gems 二进制完全相同,而不仅仅是版本相同。
因此,出于保持应用程序独立于 rubygems.org 的实际原因,建议将它们保存在 git 存储库中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接