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

时间:2013-01-30 15:31:39

标签: ruby ruby-on-rails-3 git rubygems ruby-on-rails-3.2

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

我发现让我感到烦恼的是我正在提交缓存的宝石,但我不知道它是否确实是错误的。我应该是.gitignore这些?如果是这样,我应该git rm缓存的gem文件吗?

1 个答案:

答案 0 :(得分:36)

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

vendor/cache做的是允许捆绑,特别是部署捆绑以跳过从rubygems下载gem。这大大减少了对rubygems的依赖。

在部署中,您可以指定--local到bundler以完全删除对rubygems.org的所有依赖,但前提是这些文件都被检入git。

这很有价值,因为虽然rubygems.org是一项出色的服务,但它不能免于中断。如果没有这些缓存的宝石并且在rubygems.org上停运可能意味着您将无法部署新版本,重新部署或扩展到新机器,直到rubygems重新启动。

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

因此,出于实际原因,保持您作为一个独立于rubygems.org的实用工作应用程序的功能:将它们保存在您的git仓库中。