如何让OSX High Sierra上的Ruby读取正确的Gems
解决OSX High Sierra上Ruby脚本的环境版本冲突问题
看起来你遇到了Ruby环境版本不匹配的问题——你用rbenv管理的是2.5.0版本,但脚本实际执行时却调用了系统自带的2.3.0版本,从终端输出的路径就能明显看出来:
MacBook-Pro:DTT jon$ ./run_test.command -h -v ----- Ruby Version : 2.5.0 Gem Path : /Users/jon/.gem/ruby/2.5.0 /Users/jon/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0 ----- /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_...
问题根源
虽然你的shell环境里Ruby版本是2.5.0,但run_test.command脚本可能没有继承这个环境,而是直接调用了系统默认的Ruby路径,导致加载了2.3.0的gem库,从而引发报错。
具体修复步骤
- 检查脚本的shebang行:打开
run_test.command,看开头的第一行是不是#!/usr/bin/env ruby。如果是硬编码的系统Ruby路径(比如#!/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby),改成#!/usr/bin/env ruby,这样脚本会优先使用你shell环境中配置的Ruby版本。 - 确保rbenv正确初始化:检查你的shell配置文件(比如
.bash_profile、.zshrc,取决于你用的shell),确认是否有这行代码:
如果没有,添加进去后重启终端,再输入eval "$(rbenv init -)"ruby -v确认版本是2.5.0,然后重新运行脚本。 - 锁定当前目录的Ruby版本:在脚本所在的DTT目录下执行
rbenv local 2.5.0,这样进入该目录时会自动切换到2.5.0版本,避免版本切换问题。
内容的提问来源于stack exchange,提问作者Jon Hodgson
相关产品推荐
相关产品推荐

