2010-07-17 8 views
1

J'ai tapé un simple code Ruby pour une question de tutoriel, comme indiqué ci-dessous.Ruby Erreur de programme: NoMethodError

#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!"  

Cependant, quand je lance cela, la fenêtre affiche:

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 

Je ne comprends pas pourquoi chomp est pas reconnu. J'utilise textMate sur un Mac j'ai la version 1.8.7 de Ruby, ce qui devrait aller. Des solutions?

Merci beaucoup :)

+0

Vous devez éditer votre question et indenter votre code avec quatre espaces pour préserver l'indentation/formatage. – Adrian

Répondre

1

Adrian a raison de dire que l'entrée interactive est désactivée dans TextMate 1.5.9 (r1510). See this post from TextMate's developer. Cependant, vous pouvez effectuer une mise à niveau vers une version TextMate "à la pointe de la technologie" qui restaure les entrées interactives et vous permettra d'exécuter le code ci-dessus. Accédez au Preferences -> Software Updates de TextMate et assurez-vous que Automatically check for updates est cochée.

Sélectionnez Cutting-Edge dans le menu déroulant Watch For:. Enfin, cliquez sur Check Now. La dernière version (r1589) devrait automatiquement télécharger. L'entrée interactive est réactivée dans cette version.

+0

MERCI BEAUCOUP! Cela fonctionne maintenant: D: D: D * s'incline – Vector

+0

Si ma réponse a résolu votre problème, cliquez sur la grosse case à cocher pour l'accepter comme réponse, et bienvenue dans Stack Overflow. :) – michaelmichael

0

Si vous utilisez le raccourci Cmd-R dans TextMate pour exécuter votre code, vous ne serez pas en mesure de lui fournir entrée car TextMate ne supporte que la sortie. Vous devrez l'exécuter dans un terminal à la place. La raison pour laquelle vous obtenez cette erreur est que $stdin est fermé, alors gets renvoie nil.

+0

merci pour votre aide :)) – Vector