Ruby 版本管理器允许我们.rvmrc
在每个项目中使用一个文件来设置要加载的 ruby 版本和 gem 集。是否应将此文件签入源代码管理?或者这是否过多地假设了其他开发人员的工作环境?
2 回答
源代码控制管理主要是关于可重复性:您是否能够根据存储在 SCM 中的内容来重现开发工作的版本?
如果.rvmrc
您的项目中的任何开发人员都需要该文件才能工作(使用正确的工件),那么是的,您应该对其进行版本控制。
如RVM 最佳实践中所述:
第 2 项 - 将您的 rvmrc 检查到源代码管理中。
通过将上述 rvmrc 与您的应用程序一起检查到源代码控制中,您可以确保所有用户在使用 rvm 时拥有一致的环境。
通过自动化 gemset 安装等(例如检查 rvm-site 存储库中的 rvmrc 或 TEDxPerth 存储库的 rvmrc),您还可以像更改目录一样简单地开始使用。
最重要的是,您还可以自动使您的部署设置您的应用程序特定环境。
其他开发人员可以通过以下方式在其 RVM 上使用 gemset:
echo rvm_ignore_gemsets_flag=1 >> ~/.rvmrc
这将使他们始终使用默认 gemset。
我实际上建议不要保留.rvmrc
在 SCM 中。两个具体原因:
如果您使用 gemsets,您会强制其他开发人员使用相同的 gemset(而有些人可能更喜欢将所有的 gems 放在全局 gemset 中)。
您使其他开发人员很难在不同的 Ruby 版本上运行项目。当然,在生产环境中它可能会运行
1.9.2-p290
,但为什么不允许我在本地运行应用程序1.9.3-p0
呢?
通常,它对每个开发人员施加了太多的压力(与 相同的故事database.yml
,也不应该保留在 SCM 中)。在“生产运行”Ruby 版本的项目的自述文件中的注释就足够了。