Вы не определили свой метод initialize
для своего класса (конструктор). Вы просто выполняете Mod1.sayHello
внутри определения класса (оно даже выполняется перед созданием экземпляра). Попробуйте закомментировать ваше заявление t = TestMod.new
. Вывод все равно останется видимым.
Поскольку вы включаете один и тот же файл, это заканчивается тем, что выполняется дважды (файл не включается в другой раз после этого; ruby предотвращает это). Класс должен выглядеть так:
class TestMod
def initialize
Mod1.sayHello
end
end
Почему вы все равно включили файл? Это не имеет смысла для меня.
РЕДАКТИРОВАТЬ: Устранена ошибка.
Я бы рекомендовал заменить Mod1
и Mod2
внутри определений вашего модуля на self
. Таким образом, вам не придется менять имя везде, если оно когда-нибудь изменится.