🌊
Ruby 3.4-dev でエラーメッセージのメソッド名に定義元が含まれるようになった
開発版の Ruby 3.4 でエラーメッセージやバックトレースにメソッド名が含まれる場合にその定義元が含まれるようになりました。
例えば以下のようなコードを実行した場合に
module Foo
class Bar
def inspect
1 + '1'
end
end
end
p Foo::Bar.new
今までは以下のように出力されました。
/tmp/v8Kg6AU/79:4:in `+': String can't be coerced into Integer (TypeError)
1 + '1'
^^^
from /tmp/v8Kg6AU/79:4:in `inspect'
from /tmp/v8Kg6AU/79:9:in `p'
from /tmp/v8Kg6AU/79:9:in `<main>'
これが +
や inspect
のようなメソッド名を表示するときにそれが定義されているクラス名やモジュール名が含まれるようになります。
/tmp/v8Kg6AU/78:4:in 'Integer#+': String can't be coerced into Integer (TypeError)
1 + '1'
^^^
from /tmp/v8Kg6AU/78:4:in 'Foo::Bar#inspect'
from /tmp/v8Kg6AU/78:9:in 'Kernel#p'
from /tmp/v8Kg6AU/78:9:in '<main>'
やや冗長なケースもありそうですが、シンプルにわかりやすいですねー。
Discussion