Ошибка программы Ruby: NoMethodError - PullRequest
1 голос
/ 18 июля 2010

Я набрал простой код Ruby для учебного вопроса, как показано ниже.

#Grandma is deaf!  
puts "Hey Sonny! It's your lovely Grandmother! How are you?"  
response = gets.chomp  
while response != "BYE"  
  if response != response.upcase  
    puts "Huh?! I CAN'T HEAR YOU!"  
  else  
    puts "NO! NOT SINCE " + (1930 + rand(21)).to_s + "!"  
  end  
  response = gets.chomp  
end  
puts "GOOD BYE, SONNY!"    

Однако, когда я запускаю это, окно отображает:

Hey Sonny! It's your lovely Grandmother! How are you?  
NoMethodError: private method ‘chomp’ called for nil:NilClass

at top level in deafGrandma.rb at line 3

Я не понимаю, почему chomp не распознаетсяЯ использую textMate на Mac У меня Ruby версии 1.8.7, что должно быть хорошо.Любые решения?

Большое вам спасибо:)

Ответы [ 2 ]

1 голос
/ 18 июля 2010

Адриан прав в том, что интерактивный ввод отключен в TextMate 1.5.9 (r1510). См. Этот пост от разработчика TextMate .

Однако вы можете перейти на «ультрасовременный» выпуск TextMate, который восстанавливает интерактивный ввод и позволит вам нормально выполнять вышеуказанный код.Перейдите в Preferences -> Software Updates TextMate и убедитесь, что Automatically check for updates отмечен.

Выберите Cutting-Edge в раскрывающемся меню Watch For:.Наконец, нажмите Check Now.Последний выпуск (r1589) должен автоматически загрузиться.Интерактивный ввод повторно включен в этом выпуске.

0 голосов
/ 18 июля 2010

Если для запуска кода вы используете ярлык Cmd-R в TextMate, вы не сможете вводить его, поскольку textmate поддерживает только вывод.Вам придется запустить его в терминале.Причина, по которой вы получаете эту ошибку, заключается в том, что $stdin закрыто, поэтому gets возвращает nil.

...