Другие люди уже объяснили, в чем заключается ваша проблема, а именно, поместив ваш ends
в неправильное место, однако, если вам интересно узнать, почему вы получаете результаты, которые вы получаете, то вот почему.
t = Test.new('Joe', 'Farmer')
Это создает новый экземпляр вашего тестового класса.Инициализатор определил новый метод с именем sheet
, который ничего не делает, но определяет метод с именем sheetplus
Если вы сейчас вызовете sheetplus
, вы получите ошибку, поскольку метод sheetplus
не существуетпока (sheet
не был запущен для его создания)
t.sheetplus
NoMethodError: undefined method `sheetplus' for
#<Test:0x11a9dec @name="Joe", @occupation="Farmer">
from (irb):14
Если вы сейчас вызовете sheet
, он определит метод sheetplus
и вернет результат определения метода (nil)
t.sheet # nil
Если вы теперь вызываете sheetplus, метод существует, поэтому он успешно выполняется
t.sheetplus
=> "This is Joe, who is a/an Farmer, but why does this method succeed
where the previous one fails?"