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