NameError:未定义的局部变量或方法' v' for main:对象

时间:2015-11-12 19:25:36

标签: ruby variables methods local nameerror

刚刚安装并计划今天启动Ruby,并且正在运行一些代码测试行以确保所有内容都已正确安装。简单的数学和放置命令工作正常,但当我试图打印我正在使用的版本时,我收到了这个错误。

我输入的代码,以及随后的代码和错误信息是:

 PS C:\Users\Luke> irb
 irb(main):001:0> ruby -v
 NameError: undefined local variable or method 'v' for main:Object
    from (irb):1
    from C:/Ruby200/bin/irb:12:in '<main>'
 irb(main):002:0>

在我在stackoverflow上发现的四个类似问题中,以及谷歌的少数几个问题,有很多NameErrors但没有使用过&#34; ruby​​ -v&#34;作为输入,我还没有足够的技巧从我找到的答案中收集任何有用的东西。

我使用的是Windows 10和Ruby版本2.0.0-p647。

我在这里很难过。我应该用路径变量做些什么吗?这通常是我检查的第一件事,但是安装程序有一个复选框,以便向您的PATH添加Ruby可执行文件,&#34;所以我假设这照顾它。当我检查环境变量时,它没有改变,仍然是Windows的默认值,但如果PATH没有正确设置,那么最基本的Ruby命令是否不能在终端中工作?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

ruby -v无法在irb

内工作

您需要输入RUBY_VERSION

答案 1 :(得分:0)

在交互式会话中获取Ruby版本信息

从REPL中的命令行标志获取输出

使用反引号捕获REPL中的shell命令的输出,如irb或pry。例如:

`ruby -v`
#=> "ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]\n"

从Ruby常量中获取数据

您想要的数据也存储在各种Ruby常量中。例如:

[RUBY_VERSION, RUBY_PATCHLEVEL, RUBY_RELEASE_DATE, RUBY_REVISION, RUBY_PLATFORM]
#=> ["2.2.3", 173, "2015-08-18", 51636, "x86_64-darwin14"]

从常量构造等效字符串

您可以将常量的值放入与解释器的-v标志的输出匹配的字符串中,但您必须自己构造字符串。例如:

sprintf "ruby %sp%s (%s revision %s) [%s]\n",
  RUBY_VERSION, RUBY_PATCHLEVEL, RUBY_RELEASE_DATE, RUBY_REVISION, RUBY_PLATFORM
#=> "ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]\n"