我经常需要在我的应用程序中创建分支以进行新的开发。这通常意味着我在我的分支中对我的 Gemfile 进行了更改,但在 Master 中不存在,因此我最终在 vendor/cache 中缓存的 gem 中存在差异。
我发现提交缓存的 gem 让我很困扰,但我不知道这是否确实是错误的。我应该 .gitignore-ing 这些吗?如果是这样,我应该 git rm
缓存的 gem 文件吗?
最佳答案
TL;DR:这取决于您,但我建议将它们保存在 git 中。
vendor/cache
所做的是允许捆绑,尤其是部署捆绑,以跳过从 rubygems 下载 gem。这显着减少了对 rubygems 的依赖。
在部署中,您可以指定 --local
到 bundler 以完全删除对 rubygems.org 的所有依赖,但前提是这些文件已 checkin git。
这很有值(value),因为虽然 rubygems.org 是一项出色的服务,但它无法避免中断。没有这些缓存的 gem 和 rubygems.org 上的中断可能意味着您将无法部署新版本、重新部署或扩展到新机器,直到 rubygems 备份。
还有一种观点认为 vendor/cache 可以用作 Gemfile.lock 的扩展,将部署 gem 锁定为与开发中使用的相同的二进制文件,而不仅仅是版本相同。
因此,出于实际原因,让您能够独立于 rubygems.org 作为一个实用的、可工作的应用程序运行:将它们保存在您的 git 存储库中。
关于ruby - 在 Rails 3.2 应用程序中包含 Git 中 vendor/cache 的内容是否可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14607636/