Ruby 2.3.3: поиск метода поиска
У меня есть проблема: изучить, как поиск методов работает в Ruby. Вот экспериментальный код:
class Object
def method_missing(*args)
@count = @count.to_i + 1
puts "Object: #{ @count }"
super
end
end
module Module1
def method_missing(*args)
puts 'Module1'
super
end
end
module Module2
def method_missing(*args)
puts 'Module2'
super
end
end
module Module3
def method_missing(*args)
puts 'Module3'
super
end
end
class Class1
include Module1
def method_missing(*args)
puts 'Class1'
super
end
end
class Class2 < Class1
include Module3
include Module2
def method_missing(*args)
puts 'Class2'
super
end
end
test_obj = Class2.new
test_obj.testrun # non existing method
В Ruby 2.3.0 вроде работает нормально. Но в Ruby 2.3.3 он имеет странный вывод с циклами. Даже если я прокомментирую две последние строки (#test_obj = Class2.new и #test_obj.testrun), в выводе будет цикл, хотя ничего не должно быть. Помогите найти причину проблемы, пожалуйста.