为什么`ruby -v`在rails中返回true,而不是返回版本?

时间:2015-04-08 00:52:38

标签: ruby ruby-on-rails-4

这似乎是一个愚蠢的问题,但它让我难过。如果我在rails控制台中执行此操作:

system('ruby -v')
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]
=> true

因此它显示了版本,但返回true。所以我在.erb文件中执行此操作:

<%= system('ruby -v') %>

它只是在网页上打印“true”。我搜索过谷歌,虽然所涉及的词语只是让它变得更难,因为它们被用在很多地方我发现很难制作一个能够返回我想要的查询。因此证明谷歌不是人工智能。 : - )

2 个答案:

答案 0 :(得分:3)

如果没有错误,

system执行命令并返回true。因此,在这种情况下,版本将打印到标准输出,并且您的程序会收到true,它包含在您的Erb输出中(检查您的日志文件,您可能会在其中找到ruby -v的输出。

你可能想要的是`(这是一个反击)。这是一个method,但是使用引号:

等反引号调用
2.2.1 :001 > `ruby -v`
=> "ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin13]\n"

请注意此如何返回调用ruby -v的输出而不是打印它。

答案 1 :(得分:2)

system打印出命令的结果并返回它是否成功。试试``syntax:

<%= `ruby -v` %>