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), в выводе будет цикл, хотя ничего не должно быть. Помогите найти причину проблемы, пожалуйста.

0 ответов

Другие вопросы по тегам