用于rbenv和RVM的动态Gemfile Ruby版本

时间:2016-05-04 16:02:36

标签: ruby rvm rbenv gemfile

我使用rbenv,但其他团队成员使用RVM。

在Gemfile中指定ruby 2.x.x版本时,我一直这样做:

ruby ENV['RBENV_VERSION'] || '2.2.4'

它从rbenv获取我正在使用的当前版本并将其用于Gemfile。但是,在生产中,它不存在并在||之后使用指定的版本。

我一直在寻找类似的方法在RVM中执行此操作,最终目标是设置一个Gemfile,所有开发人员都可以使用他们的本地版本的Ruby,并为生产指定具体版本。

这将允许开发人员将rbenv或RVM用于项目,并且不需要在每次使用尚未安装的版本的项目上安装新版本的Ruby时。

是否有任何RVM用户可以为RVM提供相当于ENV['RBENV_VERSION']的用户?我一直在寻找很多东西,却找不到我喜欢的东西。

我能看到的最佳答案是让RVM用户通过团队商定的环境变量名称指定版本,并像“Specifying a Ruby version via the environment”一样使用,并在Gemfile中使用它。

1 个答案:

答案 0 :(得分:1)

要从任何RVM实例获取当前的Ruby版本,可以使用以下方法查询它:

rvm list default string | sed s/ruby-//

您还可以使用RVM提示工具查询当前版本

rvm-prompt i v | sed s/ruby-//

rvm-prompt i v p g | sed s/ruby-//

取决于您希望允许的详细程度。可以在“rvm-prompt”中找到rvm-prompt命令的文档。

如果用户选择将RVM保留为其默认版本,则会报告该版本,但如果在RVM中更改了Ruby版本,则会获得当前选择的版本。

您可以使用ENV['RBENV_VERSION']的任何方式对其进行链接,例如:

`rvm list default string | sed s/ruby-//` || 2.2.4

如果RVM没有显示版本,这将选择当前的RVM Ruby版本或2.2.4。

请注意,RVM必须存在(或至少称为rvm的东西必须可用作可执行文件)。如果没有,可能需要一个额外的脚本包装器来处理它不存在的情况并优雅地降级。

就个人而言,我喜欢随处可用,包括生产环境。这是我在新的操作系统实例上安装的第一件事,甚至在文本编辑器之前,我做的第二件事是使用RVM安装相应的Ruby版本。