【发布时间】:2015-12-06 06:23:04
【问题描述】:
我在 bin/setup 的 Ruby 应用程序中有一个脚本,该脚本以:
#!/usr/bin/env ruby
env 告诉哪些可执行文件可以访问,如果$PATH 上有可用的 Ruby 版本,脚本应该使用它来执行。
假设我正在使用 rbenv 并且我有一个全局 Ruby 版本集(system 在 OS X 上回退到 /usr/bin/ruby)或其他东西。 system 或我的全局 Ruby 版本与在执行此 bin/setup 脚本的方向上声明的 .ruby-version 不同。 .ruby-version 文件包含 2.1.6。这会导致脚本立即中止:
rbenv: version `2.1.6' is not installed (set by /Users/olivierlacan/project/.ruby-version)
这意味着无法依赖env 来动态获取应该执行bin/setup 脚本的适当版本的Ruby。
我找到的唯一选择是:
#!/usr/bin/ruby
但这不能移植到任何没有在/usr/bin/ 中安装 Ruby 的 Linux 或 Windows 操作系统,比如 OS X。有没有办法解决这个问题?
【问题讨论】:
-
我不明白这里有什么问题。似乎一切都按设计进行。您的项目配置为使用未安装的 Ruby 2.1.6。因此,任何从该项目运行 Ruby 脚本的尝试都将失败。如果 rbenv 允许在此处使用与
.ruby-version文件中指定的不同的 Ruby 版本,那么 rbenv 将被破坏并且无法正常工作。