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

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

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

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

最佳答案

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

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

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

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

还有一种观点认为 vendor/cache 可以用作 Gemfile.lock 的扩展,将部署 gem 锁定为与开发中使用的相同的二进制文件,而不仅仅是版本相同。

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

关于ruby - 在 Rails 3.2 应用程序中包含 Git 中 vendor/cache 的内容是否可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14607636/

相关文章:

git - 将子目录(已重命名!)分离到新的 repo 协议(protocol)中

ruby - 在 xpath/Nokogiri 中嵌入 Ruby

ruby-on-rails - 如何让事件记录像对待真实属性一样对待虚拟属性?

ruby - 大写一个句子

ruby-on-rails-3 - 载波错误

git - 有条件的 Gitignore

ruby - 停止 Ruby 脚本时如何禁止打印 ^C?

ruby-on-rails - 将 HTML 转换为适当的纯文本?

ruby-on-rails-3 - Rails : Could not find bcrypt-ruby-3. 0.1 在任何来源

macos - 警告 : Your version of git is 1. 9.3。存在严重的安全漏洞