Ruby 4.0 リファレンスマニュアル

singleton method Psych.safe_load_stream

safe_load_stream(yaml, filename: nil, permitted_classes: [], aliases: false) -> [object]Ruby 4.0 から[permalink][rdoc][edit]
safe_load_stream(yaml, filename: nil, permitted_classes: [], aliases: false) {|obj| ... } -> nil

複数の YAML ドキュメントを含むデータを、Psych.safe_load と同様に安全に Ruby のオブジェクトに変換します。

ブロックなしの場合は変換したオブジェクトの配列を返します。

ブロックありの場合は変換した各オブジェクトを引数としてそのブロックを呼び出し、nil を返します。

permitted_classes、aliases の意味は Psych.safe_load と同じです。

[PARAM] yaml:
YAML ドキュメント(文字列 or IO オブジェクト)
[PARAM] filename:
Psych::SyntaxError 発生時にファイル名として表示する文字列
[PARAM] permitted_classes:
追加で読み込みを許可するクラスの配列
[PARAM] aliases:
エイリアスの読み込みを許可するかどうか
[EXCEPTION] Psych::DisallowedClass:
yaml に permitted_classes で許可されていないクラスが含まれていたときに発生します
[EXCEPTION] Psych::BadAlias:
yaml がエイリアスを含み、かつ aliases が false のときに発生します

[SEE_ALSO] Psych.safe_load, Psych.load_stream

require 'psych'

p Psych.safe_load_stream("--- foo\n...\n--- bar\n...") # => ['foo', 'bar']

list = []
Psych.safe_load_stream("--- foo\n...\n--- bar\n...") do |ruby|
  list << ruby
end
p list # => ['foo', 'bar']