IOオブジェクト(一部のSTDOUT
出力テキスト)を使用していて、テキスト処理を実行できるように文字列に変換しようとしています。Iこのようなことをしたい:
my_io_object = $stdout
#=> #<IO:<STDOUT>>
my_io_object.puts('hi') #note: I know how to make 'hi' into a string, but this is a simplified example
#=>hi
my_io_object.to_s
私はいくつかのことを試しましたが、いくつかのエラーが発生しました:
my_io_object.read
#=> IOError: not opened for reading
my_io_object.open
#=> NoMethodError: private method `open' called for #<IO:<STDOUT>>
IO.read(my_io_object)
#=> TypeError: can't convert IO into String
IOクラスのメソッドを読みましたが、そのオブジェクトのデータを操作する方法がわかりません。何か提案はありますか?
STDOUTではなくStringIOオブジェクトに出力を送信することでこれを解決しました。
> output = StringIO.new
#<StringIO:0x007fcb28629030>
> output.puts('hi')
nil
> output.string
"hi\n"