Ruby程序错误:NoMethodError

时间:2010-07-17 22:08:21

标签: ruby textmate

我为教程问题输入了一个简单的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无法识别。我在Mac上使用textMate我有Ruby版本1.8.7,应该没问题。任何解决方案?

非常感谢你:)

2 个答案:

答案 0 :(得分:1)

Adrian在TextMate 1.5.9(r1510)中禁用交互式输入是正确的。 See this post from TextMate's developer

但是,您可以升级到恢复交互式输入的“尖端”TextMate版本,并允许您运行上述代码。转到TextMate的Preferences -> Software Updates并确保选中Automatically check for updates

Cutting-Edge下拉菜单中选择Watch For:。最后,点击Check Now。最新版本(r1589)应自动下载。此版本中重新启用了交互式输入。

答案 1 :(得分:0)

如果您使用TextMate中的Cmd-R快捷键来运行代码,则无法提供输入,因为textmate仅支持输出。您必须在终端中运行它。您收到该错误的原因是$stdin已关闭,因此gets会返回nil