我应该在`.ruby-gemset`和/或`.ruby-version`检查?(Should I c

2019-08-31 11:29发布

我刚刚更新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等工具创造者引文会在回答中可以理解的。

Answer 1:

对于标准项目

检查.ruby-version ,如果你的项目依赖于像红宝石ruby-2.0.0 。 检查.ruby-gemset只有当你的团队同意就可以了。 添加.rvmrc.gitignore所以任何人都可以覆盖.ruby-*与文件中的设置.rvmrc

对于宝石

检查.ruby-versionruby-1.8.7只有当你的项目还针对红宝石1.8.7 ,否则检查只有当你的宝石需要它。 不要检查.ruby-gemset



Answer 2:

检查中.rvmrc.ruby-version.ruby-gemset

对于:

  • 你的项目有不同的分支(比如一个项目了RubyGems支持Ruby的1.81.92.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-versionruby-1.9.3-p329 。 它很容易与所有这些补丁自己编译的Ruby,仍然只是定制它命名为ruby-1.9.3-329只是让该配置文件将拿起这个红宝石而不是标准的红宝石。



Answer 3:

我将包括.ruby-version -你和其他人做的项目,与你一起的服务器,应该是使用Ruby的版本相同。

.ruby-gemset ....你的,我想。



文章来源: Should I check in `.ruby-gemset` and/or `.ruby-version`?
标签: ruby rvm