12

当我跑步时,ruby -version我得到:

ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0]
-e:1: undefined local variable or method `rsion' for main:Object (NameError)

有什么问题?

4

3 回答 3

38

使用 ruby​​ -v 或 ruby​​ --version。它将 -version 解析为 rsion。

这两个工作中的任何一个。计算破折号的数量:

ruby -v
ruby --version

当您提供带有“版本”的单个破折号时,Ruby 会看到:

ruby -v -e rsion
于 2013-08-09T19:46:37.863 回答
8

-v选项和--version选项,但没有 -version 选项。(计算破折号。)为 main:Object 查找未定义的局部变量或方法 'rsion'

从这个线程,实际原因很清楚:

如果你运行ruby -version,因为你只使用一个破折号,单词 'version' 不会被视为单个标志,而是作为标志列表。在这种情况下,它选择 -v 标志,打印版本信息。然后它尝试处理 e 标志,它基本上表示“这一行的其余部分是要执行的 ruby​​ 脚本”。所以 ruby​​ 忠实地尝试解析“rsion”,这是你得到 NameError 的地方。

要获取版本信息,您可以执行ruby -vruby --version

于 2013-08-09T19:48:05.127 回答
0

这就是解释器的方式,但你也有在 Ruby 中定义的常量。

尝试

$> ruby -e " p RUBY_VERSION"

然后您可以在 Module.constants 下找到

这里

>> Module.constants.sort.each do |constant| 
?>   puts constant
>> end
于 2013-09-10T17:14:38.853 回答