当我运行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)
可能出现什么问题?
答案 0 :(得分:36)
使用ruby -v或ruby --version。它将-version解析为rsion。
这两项工作中的任何一项都有效。计算短划线的数量:
ruby -v
ruby --version
当您使用"版本"提供单个短划线时,Ruby会看到:
ruby -v -e rsion
答案 1 :(得分:8)
有 -v 选项和 - 版本选项,但没有-version选项。 (计算破折号。)看undefined local variable or method 'rsion' for main:Object。
从thread开始,实际原因非常清楚:
如果您运行
ruby -version
,因为您只使用一个短划线,即单词 'version'不被视为单个标志,而是作为标志列表。在 在这种情况下,它会获取-v标志,该标志会打印版本信息。 然后它试图处理e标志,基本上说“其余部分 line是一个执行的ruby脚本。“所以ruby忠实地尝试解析 “rsion”,这是你得到NameError的地方。要获取版本信息,您可以执行
ruby -v
或ruby --version
。
答案 2 :(得分:0)
这就是解释器的方式,但你也在Ruby中定义了常量。
尝试
$> ruby -e " p RUBY_VERSION"
然后您可以在Module.constants
下找到这里
>> Module.constants.sort.each do |constant|
?> puts constant
>> end