我在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操作系统。有没有办法解决这个问题?
答案 0 :(得分:1)
在createPanel()
中,在特定Ruby版本中安装gem时,看起来像there's a similar issue,并且由于rbenv
解析命令的方式而在全局范围内。
rbenv-which-ext
extension的GitHub user @yyuu是the Python fork pyenv
的维护者,至少解决了这个问题。可能需要额外的补丁来以同样的方式将rbenv-which
视为命令,但值得一试。我将尝试在本地重新创建您的问题并执行相同的操作来验证。