Извините, я не смог заставить форматирование кода работать в «комментарии» только в «ответе», но это в ответ на вопрос Акостадинова Хендрику «как это отличается от его ответа [Константина]?»
Я бы предположил, что Хендрик пытался получить доступ к константе из методов своего наследующего класса, и это зависит от того, является ли это экземпляром или статическим методом.Кажется, что он ведет себя так, как вы ожидаете в методе экземпляра.Но может быть, а может и нет, как вы ожидаете от статического метода.Даже если это не то, что имел в виду Хендрик, это, возможно, стоит отметить:
Если у вас есть точные определения классов, как у Константина, но вы добавляете метод к классу A, например:Тогда вы оба раза получите A:
A.print_const # prints A
B.print_const # prints A
Однако, если вы определите метод в A, ссылаясь на класс:
def self.print_const
puts self::CONST
end
Тогда вы получите:
A.print_const # prints A
B.print_const # prints B