rbenv 和 RVM 的动态 Gemfile Ruby 版本
Dynamic Gemfile Ruby version for both rbenv and RVM
我使用 rbenv,但其他团队成员使用 RVM。
在 Gemfile 中指定 ruby 2.x.x
版本时,我一直这样做:
ruby ENV['RBENV_VERSION'] || '2.2.4'
它从 rbenv 获取我正在使用的当前版本并将其用于 Gemfile。但是,在生产中,它不存在并使用 ||
.
之后的指定版本
我一直在寻找在 RVM 中执行此操作的类似方法,最终目标是设置一个 Gemfile,所有开发人员都可以在其中使用他们的本地版本 Ruby 并为指定具体版本生产.
这将允许开发人员在项目中使用 rbenv 或 RVM,并且无需在每次使用尚未安装的版本处理项目时安装 Ruby 的新版本。
是否有任何 RVM 用户可以为我提供相当于 ENV['RBENV_VERSION']
的 RVM?我找了很多都没有找到我喜欢的东西。
我能看到的最佳答案是让 RVM 用户通过团队商定的环境变量名称指定版本,并像“Specifying a Ruby version via the environment”一样使用,并在 Gemfile 中使用它。
要从任何 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 的默认版本,您会收到该版本的报告,但如果 Ruby 版本在 RVM 中已更改,您会收到当前选择的版本。
您可以使用 ENV['RBENV_VERSION']
的任何方式链接它,例如:
`rvm list default string | sed s/ruby-//` || 2.2.4
这将选择当前 RVM Ruby 版本或 2.2.4(如果 RVM 未显示版本)。
请注意,RVM 必须存在(或者至少必须提供名为 rvm
的可执行文件)。如果没有,可能需要额外的脚本包装器来处理它不存在并优雅降级的情况。
就个人而言,我喜欢它随处可用,包括生产环境。这是我在新 OS 实例上安装的第一件事,甚至在文本编辑器之前,我做的第二件事是安装适当的 Ruby 版本和 RVM。
我使用 rbenv,但其他团队成员使用 RVM。
在 Gemfile 中指定 ruby 2.x.x
版本时,我一直这样做:
ruby ENV['RBENV_VERSION'] || '2.2.4'
它从 rbenv 获取我正在使用的当前版本并将其用于 Gemfile。但是,在生产中,它不存在并使用 ||
.
我一直在寻找在 RVM 中执行此操作的类似方法,最终目标是设置一个 Gemfile,所有开发人员都可以在其中使用他们的本地版本 Ruby 并为指定具体版本生产.
这将允许开发人员在项目中使用 rbenv 或 RVM,并且无需在每次使用尚未安装的版本处理项目时安装 Ruby 的新版本。
是否有任何 RVM 用户可以为我提供相当于 ENV['RBENV_VERSION']
的 RVM?我找了很多都没有找到我喜欢的东西。
我能看到的最佳答案是让 RVM 用户通过团队商定的环境变量名称指定版本,并像“Specifying a Ruby version via the environment”一样使用,并在 Gemfile 中使用它。
要从任何 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 的默认版本,您会收到该版本的报告,但如果 Ruby 版本在 RVM 中已更改,您会收到当前选择的版本。
您可以使用 ENV['RBENV_VERSION']
的任何方式链接它,例如:
`rvm list default string | sed s/ruby-//` || 2.2.4
这将选择当前 RVM Ruby 版本或 2.2.4(如果 RVM 未显示版本)。
请注意,RVM 必须存在(或者至少必须提供名为 rvm
的可执行文件)。如果没有,可能需要额外的脚本包装器来处理它不存在并优雅降级的情况。
就个人而言,我喜欢它随处可用,包括生产环境。这是我在新 OS 实例上安装的第一件事,甚至在文本编辑器之前,我做的第二件事是安装适当的 Ruby 版本和 RVM。