2017-12-25 (Mon) [長年日記]
_ Ruby 2.5.0へのアップグレード
Ruby 2.5.0がリリースされたので、この日記をRuby 2.5.0にアップグレードした。
今のところtDiaryの動作はとくに問題なさそうだが、2.5.0のバグっぽい挙動を見つけてしまったような……。
_ モジュールのrefineのバグ
モジュールをrefineした際のバグをいくつか直したつもりだったが、以下のケースでusing Dしていないのにrefineしただけで挙動が変わってしまうようだ。
module A
def foo
puts "A#foo"
super
end
end
class B
def foo
puts "B#foo"
end
end
class C < B
include A
def foo
puts "C#foo"
super
end
end
module D
refine A do
def foo
end
end
end
C.new.foo
using Dした時にsuperでBを辿れないのは仕方ないかなと思っていたのだが、using Dしてないのにこうなるのはちょっとまずい……。
とりあえず、Bug #14232として登録しておいた。
[ツッコミを入れる]