概要
書籍 Build Awesome Command-Line Applications in Ruby2
章
Play Well with Others
詳細
Rubyではバッククォートもしくは、 %x[] によって標準出力を取得できるが
標準エラーは取得できない。
標準エラーにもアクセスするには Open3ライブラリを利用する。
Open3は capture3というメソッドを持ち、このメソッドは
標準出力・標準エラー・ステータスを取得します。
サンプルコード
require 'open3' stdout_str, stderr_str, exit_status = Open3.capture3('rspec -v') puts "stdout_str=#{stdout_str}" puts "stderr_str=#{stderr_str}" puts "exit_status=#{exit_status}" puts stdout_str, stderr_str, exit_status = Open3.capture3('which hoge') puts "stdout_str=#{stdout_str}" puts "stderr_str=#{stderr_str}" puts "exit_status=#{exit_status}"
出力
$ ruby 1.rb stdout_str=2.14.8 stderr_str= exit_status=pid 2096 exit 0 stdout_str= stderr_str=which: no hoge in (・・・各種パス・・・) exit_status=pid 3272 exit 1