我刚刚更新RVM,并取代旧的.rvmrc
,它自动创建.ruby-gemset
和.ruby-version
。
我一直有.rvmrc
文件中包含的内容rvm use --create default@project_name
。 然而, .ruby-version
包含了特定的Ruby版本我跑,而不是default
。 我在犹豫要检查这一点。
另外,我听人说一个人不应该在检查播客有人说.ruby-gemset
,因为其他人可能有关于如何命名gemsets自己的喜好。
当应该或不应该在检查.ruby-gemset
和/或.ruby-version
?
特别:
- 什么是一些权衡的?
- 怎样项目的类型影响的决定(例如,应用程序VS宝石)?
- 如果他们应该检查在,请问项目的类型影响什么应该在这些文件中去?
从像RVM,rbenv等工具创造者引文会在回答中可以理解的。
对于标准项目
检查.ruby-version
,如果你的项目依赖于像红宝石ruby-2.0.0
。 检查.ruby-gemset
只有当你的团队同意就可以了。 添加.rvmrc
到.gitignore
所以任何人都可以覆盖.ruby-*
与文件中的设置.rvmrc
。
对于宝石
检查.ruby-version
与ruby-1.8.7
只有当你的项目还针对红宝石1.8.7
,否则检查只有当你的宝石需要它。 不要检查.ruby-gemset
。
检查中.rvmrc
, .ruby-version
或.ruby-gemset
?
对于:
你的项目有不同的分支(比如一个项目了RubyGems支持Ruby的1.8
, 1.9
和2.0
版本)。 它能够更好地检查这个文件,让你的开发人员不必继续编辑,当他们转换分支这些文件。 同样不适用于应用程序虽然,在那里你会被大部分工作只是一个Ruby的版本。
同上情况,但说你正在运行CI服务器(说的TeamCity /詹金斯/ ...)自动只是运行rake spec
为每一个入住。 你不想为每个分支创建独立的编译管道,只是为了有一个单独的缘故rvm use ...
每个分支。 你只是想根据分支自动选择了Ruby版本
你必须对环境和严格控制所有的开发。 你要么不需要或决定了它们使用相同的红宝石和宝石
您正在使用Phusion乘客或斯特拉努,它可以自动读取.rvmrc
文件和/选择合适的红宝石部署托管
另请参阅RVM最佳实践
反对:
你可以自己编译的Ruby RVM中,有一些实验性的补丁,并给它一个自定义名称。
例如rvm install 1.9.3 --patch railsexpress,falcon --name ruby-1.9.3-perf
在上面的例子中,我已经安装了Ruby 1.9.3与一些伟大的加速补丁( 顺便说一句,他们是真棒 ),但不是调用它1.9.3
,我打电话给我自己的名字。 我想说rvm use ruby-1.9.3-perf
每当我需要这个。 在这种情况下,如果项目有自己的.ruby-version
,那么它打乱了我的环境。 在我的项目,这些补丁都是标准的,我们积极推荐这些。 但开发商如何命名的Ruby编译得到的是由他们决定
同样,人们使用不同的gemsets。 有些根本就不使用gemsets。 一些市场份额不同(但相近)Ruby项目相同的宝石。 鉴于此,再次单.ruby-gemset
也不会为大家工作
你的项目有一个不起眼的红宝石版本,只是说: 1.9.3
。 你的开发人员首先安装了最新的Ruby 1.9.3-P329。 但他们后来只更新RVM / Rbenv(因为他们在其他项目上工作)。 他们.rvmrc
或.ruby-version
刚刚打破,因为红宝石的最新版本,RVM / Rbenv从刚刚更改注册ruby-1.9.3-p329
到.ruby-1.9.3-p362
,它会说ruby-1.9.3-p362
没有安装。 这种情况下往往会经常发生。
只要你对你的Ruby版本(包括补丁级别)指定一个合适的全名,你应该确定。 比方说,你的项目的.ruby-version
称ruby-1.9.3-p329
。 它很容易与所有这些补丁自己编译的Ruby,仍然只是定制它命名为ruby-1.9.3-329
只是让该配置文件将拿起这个红宝石而不是标准的红宝石。
我将包括.ruby-version
-你和其他人做的项目,与你一起的服务器,应该是使用Ruby的版本相同。
.ruby-gemset
....你的,我想。