【问题标题】: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'

标签: ruby nameerror


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 2021-09-08
      • 1970-01-01
      • 2013-01-15
      相关资源
      最近更新 更多