ぶていのログでぶログ

思い出したが吉日

Ubuntu 22.04までのlibyamlだとvalueがないHashのキーをダンプすると空白が入る

root@e5432af20b73:/# ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
root@e5432af20b73:/# dpkg -l | grep libyaml
ii  libyaml-0-2:amd64       0.2.2-1build2                           amd64        Fast YAML 1.1 parser and emitter library
root@e5432af20b73:/# ruby -ryaml -e 'p({"foo" => nil}.to_yaml)'
"---\nfoo: \n"
          ^----- ここに空白がある

root@7ea023943991:/# ruby -v
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [x86_64-linux-gnu]
root@7ea023943991:/# dpkg -l | grep libyaml
ii  libyaml-0-2:amd64       0.2.5-1                                  amd64        Fast YAML 1.1 parser and emitter library
root@7ea023943991:/# ruby -ryaml -e 'p({"foo" => nil}.to_yaml)'
"---\nfoo:\n"
         ^^^---- 空白がない

Rubyでto_yamlした内容をファイルに書き出していたリポジトリで差分になっていたので気が付いた。 Ruby3系から外部のlibyamlを使うようになったので地味にバージョンごとに動作が違うことが起こるのだなぁという学び。