Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > psychライブラリ > Psych::Streamクラス

class Psych::Stream

クラスの継承リスト: Psych::Stream < Psych::Visitors::YAMLTree < Psych::Visitors::Visitor < Object < Kernel < BasicObject

要約

入力されたオブジェクトから変換された YAML document を指定した IO に出力する機能を持つクラスです。

start で変換を開始し、push で変換する Ruby オブジェクトを渡し、 最後に finish を呼ぶことで変換を完了します。

stream = Psych::Stream.new($stdout)
stream.start
stream.push({:foo => 'bar'})
stream.finish

YAML document は(バッファリングされずに)直接 $stdout に出力されます。

finish を確実に呼び出すためには Psych::Stream#start メソッドを ブロック付きで呼び出すとよいでしょう。

stream = Psych::Stream.new($stdout)
stream.start do |em|
  em.push(:foo => 'bar')
end

基本的な仕組みは Psych::Visitors::YAMLTree と似ています。

目次

特異メソッド
new
インスタンスメソッド
finish start

特異メソッド

new(io) -> Psych::Stream[permalink][rdoc]

新たな Stream オブジェクトを生成します。

io で YAML document の出力先を指定します。

[PARAM] io:
出力先の IO オブジェクト

インスタンスメソッド

finish -> ()[permalink][rdoc]

YAML document への変換を完了し、io への出力を完了します。

start(encoding = Psych::Nodes::Stream::UTF8) -> Psych::Stream[permalink][rdoc]
start(encoding = Psych::Nodes::Stream::UTF8) {|em| ... } -> Psych::Stream

Ruby オブジェクトを YAML document に変換するための準備をします。

変換された document は Psych::Stream.new で指定した 出力先に出力されます。

finish を呼び出すことで出力が完了します(finish を呼び出さないと 最後まで出力されない場合があります)。

ブロック付きで start を呼び出すと、変換準備を終えた Stream オブジェクト (self) がブロックに渡され、ブロックが呼び出された後に finish を呼び出します。 これによって finish を確実に呼び出すことができます。

[PARAM] encoding:
出力のエンコーディング