💬

[Bug #21641] Hash#to_s の結果が Ruby 3.4 から変わっているが明文化されていないというバグ報告

に公開

[Bug #21641] Hash#to_s behaves different in 3.4

  • 以下のように Hash#to_s の結果が Ruby 3.4 から変わっているが明文化されていないというバグ報告
data = { x: 1 }

p(data.to_s)
# Ruby 3.3 => "{:x=>1}"
# Ruby 3.4 => "{x: 1}"
  • 起票者は #to_s の結果を Redis に保存していて困っているらしい
  • これなんですが Hash#inspect の結果が Ruby 3.4 から以下のように変わることはリリースノートに載っているんですが Hash#to_s については特に言及はされてないんですよねえ
data = { x: 1 }

p(data.inspect)
# Ruby 3.3 => "{:x=>1}"
# Ruby 3.4 => "{x: 1}"
  • そもそも実装的には Hash#inspectHash#to_s の alias として定義されているぽいのでどっちかって言うと変わったのは Hash#to_s になるのかなあ
pp Hash.method(:inspect).original_name
# => :to_s
GitHubで編集を提案

Discussion