Ruby脚本shebang与rbenv和卸载项目所需的版本

时间:2015-12-06 06:23:05

标签: ruby rbenv env

我在bin/setup的Ruby应用程序中有一个脚本,它以:

开头
#!/usr/bin/env ruby

env告诉可访问哪些可执行文件,如果$PATH上有可用的Ruby版本,脚本应该使用它来执行。

假设我正在使用rbenv并且我有一个全局Ruby版本集(system在OS X上可以回退到/usr/bin/ruby)或者其他东西。 system或我的全局Ruby版本与在执行此.ruby-version脚本的方向上声明的bin/setup不同。 .ruby-version文件包含2.1.6。这会导致脚本立即中止:

rbenv: version `2.1.6' is not installed (set by /Users/olivierlacan/project/.ruby-version)

这意味着没有办法依赖env动态获取适当版本的Ruby,这个bin/setup脚本应该用。{/ p>

我找到的唯一选择是:

#!/usr/bin/ruby

但是这不能移植到任何没有像OS X那样在/usr/bin/中安装Ruby的Linux或Windows操作系统。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

createPanel()中,在特定Ruby版本中安装gem时,看起来像there's a similar issue,并且由于rbenv解析命令的方式而在全局范围内。

The rbenv-which-ext extensionGitHub user @yyuuthe Python fork pyenv的维护者,至少解决了这个问题。可能需要额外的补丁来以同样的方式将rbenv-which视为命令,但值得一试。我将尝试在本地重新创建您的问题并执行相同的操作来验证。