应该将 .bundle 目录添加到 CVS 中吗?
Should `.bundle` directory be added to CVS?
最近我将我的一些 Ruby 项目依赖项移到了 development
组,以便不在生产环境中安装它们(例如 rubocop
)
在那些项目中,我看到有一个新文件 .bundle/config
,其内容如下:
---
BUNDLE_WITH: "development"
或
---
BUNDLE_WITHOUT: "development"
我想我可以安全地将此文件(和 .bundle
)文件夹添加到 .gitignore
,但可以肯定的是 - 有什么最佳实践吗?
无法在 $PROJECT_ROOT/.bundle
目录中找到任何有用的信息
TL;DR
不要将 .bundle 目录存储在源中。它旨在成为某些捆绑器设置和标志的本地缓存,而不是所有项目贡献者之间共享的东西。
分析
有一些支持和反对将您的 Gemfile.lock 存储在源代码管理中的论点,但 .bundle 目录的内容不打算在项目中的多个 users/machines 之间共享。跟踪的唯一潜在用例。bundle/config 是记住生产或测试分支中运行的某些标志,但无论如何 that behavior is deprecated。
实际上,存储 .bundle 目录可能会导致您的开发人员意外使用标志。这可能会导致不必要的调试工作,以及项目贡献者的 potentially-surprising 行为。 Rake 任务或 setup/deployment 脚本是处理 Bundler 标志的更好选择,尤其是当这种行为已被弃用并且计划在 Bundler 3 中消失时。
最近我将我的一些 Ruby 项目依赖项移到了 development
组,以便不在生产环境中安装它们(例如 rubocop
)
在那些项目中,我看到有一个新文件 .bundle/config
,其内容如下:
---
BUNDLE_WITH: "development"
或
---
BUNDLE_WITHOUT: "development"
我想我可以安全地将此文件(和 .bundle
)文件夹添加到 .gitignore
,但可以肯定的是 - 有什么最佳实践吗?
无法在 $PROJECT_ROOT/.bundle
目录中找到任何有用的信息
TL;DR
不要将 .bundle 目录存储在源中。它旨在成为某些捆绑器设置和标志的本地缓存,而不是所有项目贡献者之间共享的东西。
分析
有一些支持和反对将您的 Gemfile.lock 存储在源代码管理中的论点,但 .bundle 目录的内容不打算在项目中的多个 users/machines 之间共享。跟踪的唯一潜在用例。bundle/config 是记住生产或测试分支中运行的某些标志,但无论如何 that behavior is deprecated。
实际上,存储 .bundle 目录可能会导致您的开发人员意外使用标志。这可能会导致不必要的调试工作,以及项目贡献者的 potentially-surprising 行为。 Rake 任务或 setup/deployment 脚本是处理 Bundler 标志的更好选择,尤其是当这种行为已被弃用并且计划在 Bundler 3 中消失时。