为啥我无法确定我的 ruby​​ 安装版本?

Posted

技术标签:

【中文标题】为啥我无法确定我的 ruby​​ 安装版本?【英文标题】:Why can I not determine my ruby installation's version?为什么我无法确定我的 ruby​​ 安装版本? 【发布时间】:2013-08-11 20:17:10 【问题描述】:

当我运行 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)

可能出了什么问题?

【问题讨论】:

很奇怪,ruby --version 没有返回错误。 您安装的主要问题是 ruby​​ 1.8.7 已经结束生命周期并且现在不受支持。除此之外,@R_G 已经说明你的ruby -version 等同于ruby -v -e 'rsion' 【参考方案1】:

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

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

ruby -v
ruby --version

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

ruby -v -e rsion

【讨论】:

【参考方案2】:

-v 选项和 --version 选项,但没有 -version 选项。 (数破折号。)看undefined local variable or method 'rsion' for main:Object

从这个thread,实际原因很清楚了:

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

要获取版本信息,您可以使用ruby -vruby --version

【讨论】:

啊哈,这太神奇了,你的回答确实让我明白了确切的错误,即使该链接遗憾地不再起作用(选项 v 和选项 e 存在并且选项 e 正在尝试启动一个命令, 而rsion 不是有效命令(ruby -v + ruby -e 带有参数 'risen' = ruby -version @b.enoit.be 很高兴打破零件。【参考方案3】:

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

试试

$> ruby -e " p RUBY_VERSION"

你可以在 Module.constants 下找到 then

这里

>> Module.constants.sort.each do |constant| 
?>   puts constant
>> end

【讨论】:

以上是关于为啥我无法确定我的 ruby​​ 安装版本?的主要内容,如果未能解决你的问题,请参考以下文章

为啥最新版的VS2017没有net framework 4.6.2,且我无法安装

安装Ruby多版本Ruby共存Ruby安装慢问题

无法在 Yosemite 的全新安装和 ruby​​ 的全新版本上安装 therubyracer

gem install报错 ruby升级

为啥我的MAPGIS安装后,启动后,不管点击啥功能都出现就出程序初始化失败

1月28日周日,更新ruby到2.5.0版,rvm更新。