如何使用rbenv在shell脚本中使用ruby的指定版本?


8

我要用ruby编写一些简短的脚本。我想通过shebang或其他方式指定红宝石版本。

我将在许多环境中使用该脚本。我在环境中使用rbenv,但不确定安装了哪个版本的ruby。

如果未安装指定版本的ruby,脚本必须失败。

我该怎么做?有什么好的方法应该遵循吗?

Answers:


7

根据官方文档,听起来您只需要像这样为脚本添加前缀:

#!/usr/bin/env ruby

然后执行以下操作之一,以告诉您rbenv要使用哪个版本的Ruby:

摘录:https : //github.com/sstephenson/rbenv

选择Ruby版本

执行填充程序时,rbenv通过从以下来源按以下顺序读取来确定要使用的Ruby版本:

  1. RBENV_VERSION环境变量,如果指定。您可以使用rbenvshell命令在当前的shell会话中设置此环境变量。

  2. .ruby-version通过搜索正在执行的脚本的目录及其每个父目录,找到第一个文件,直到到达文件系统的根目录为止。

  3. .ruby-version搜索第一个文件,方法是搜索当前工作目录及其每个父目录,直至到达文件系统的根目录。您可以.ruby-version使用rbenv本地命令在当前工作目录中修改文件。

  4. 全局~/.rbenv/version文件。您可以使用rbenvglobal命令修改此文件。如果不存在全局版本文件,则rbenv假定您要使用“系统” Ruby —即,如果rbenv不在您的路径中,则将运行任何版本。

然后,您可以使用此命令.ruby-version在目录中创建文件以及Ruby脚本。

$ rbenv local 1.9.3-p327

现在不推荐使用;根据指定的文档;现在,当您使用.ruby-version文件在应用程序中运行脚本或binstub时,rbenv将自动使用该应用程序指定的Ruby版本,而不管它们从哪个目录运行。
AnneTheAgile
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.