0

我刚刚将 Ruby 1.9.3-p374 安装到 rbenv 中,并且正在捆绑我正在开发的应用程序。但是,当捆绑包到达时,binding_of_caller我看到以下错误:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
extconf.rb:7: uninitialized constant RUBY_ENGINE (NameError)

运行echo $RUBY_ENGINE给了我一个空白字符串。手动设置RUBY_ENGINEruby无济于事。

我怎样才能解决这个问题?

4

2 回答 2

2

RUBY_ENGINE并且RUBY_VERSION都是由 ruby​​ 为正在运行的 ruby​​ 程序定义的 constance。它们不是普通 shell 上可用的环境变量,这解释了为什么你的echo命令空手而归。

此外,正如堆栈跟踪摘录所证明的那样,您使用的不是Ruby 1.9.3,而是 Mac 上的默认 Ruby 1.8。与 Ruby 1.8 一样,RUBY_ENGINE不可用,您会看到观察到的错误。

而所有这一切的原因可能只是你没有切换 ti 实际上使用你的 rbenv 安装的 ruby​​。为此,您应该rbenv global 1.9.3-p374在您的 shell 上尝试类似的操作,并检查您当前的 ruby​​ 是否正确(通过检查 eg ruby --version)。

于 2013-03-14T12:37:41.780 回答
0

只需检查它是否首先定义。像这样的东西

if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
于 2016-11-11T10:58:55.467 回答