Ruby の YAML
(およびその実装である Psych
)の safe_load
メソッドでは、 エイリアスの記述を許可するために aliases
オプションで true を指定する必要がある。
ただし、 safe_load
メソッドの aliases
オプションは、 YAML
のv3.0までは位置引数、v3.1からはキーワード引数に変わっている点に注意する必要がある。
- v3.0: https://github.com/ruby/psych/blob/v3.0.0/lib/psych.rb#L303
- v3.1: https://github.com/ruby/psych/blob/v3.1.0/lib/psych.rb#L328
そのため、互換性を考慮すると、次のようにバージョンに応じて呼び出し方を切り替える必要がある。
major, minor, _ = YAML::VERSION.split(".") if major >= "4" || (major == "3" && minor >= "1") YAML.safe_load(source, aliases: true) else YAML.safe_load(source, [], [], true) end
ちなみに、v3.0以前で aliases
キーワードを使うと次のような例外が発生する。
ArgumentError: unknown keyword: aliases