Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Kernel#warnメソッドでエラー出力

Kernel#warnは標準エラー出力(STDERR)に出力してくれるメソッドです。
Kernelのメソッドなので、putsと同じ感覚で使えます。

$ cat test.rb 
warn "error test"
puts "stdio test"

とした場合、

$ ruby test.rb > echo
error test

$ ruby truby test.rb 2> echo
stdio test

と、putsはSTDIO、warnはSTDERRに対応している事がわかります。

実装面の話

上でputsと同じ感覚と書きましたが、公式によると
この二式は等価との事です。
同じ仕様感なのも当たり前ですね

warn(*message)

$stderr.puts(*message) if !$VERBOSE.nil? && !message.empty?