如果我正在运行IRB并且我使用此处提到的方法http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-60来返回ruby版本,那么它可以正常工作。
irb(main):001:0> %x{ruby -v}
=> "ruby 1.9.2p290 (2011-07-09) [i386-mingw32]\n"
但是当我尝试用IR在IRB中做同样的事情时,我可以看到它打印到屏幕但它没有返回。
irb(main):002:0> %x{java -version}
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)
=> ""
Java使用什么方法输出到控制台,如何捕获它以便在ruby / rails程序中使用?
答案 0 :(得分:4)
Java正在使用STDERR打印其版本信息。您可以通过将STDERR路由到STDOUT的流并捕获它们来轻松捕获它。
asdf = `java -version 2>&1`
puts asdf
将输出:
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-10M3720)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)
在命令行工作时,这是一种非常常见的技术。在命令行处执行man sh
,然后使用“REDIRECTION
”搜索/REDIRECTION
并从那里阅读。