Потому что, когда этот метод выполняется:
def message(message)
@@message = message
end
@@ message относится к переменной класса в модуле ClassMethods (не в классе ExtendedClass)
Вот одно строчное изменение, которое заставляет его работать так, как вы ожидаете:
def message(message)
self.send(:class_variable_set, "@@message", message)
end
Это немного антипаттерн (использование 'send', чтобы обойти тот факт, что 'class_variable_set' является приватным), но я верю, что это отвечает на вопрос.
НТН