2009-12-10 5 views
38

Soy bastante nuevo para Ruby, y hoy escribí una aplicación a la que puede pasar argumentos mediante ARGV. Pero dentro de mi aplicación, quiero poder usar "get". El problema es que, cada vez que trato de hacerlo, obtengo un error.Kernel # obtiene intentos de leer el archivo en lugar de la entrada estándar

Aquí es un simple script que muestra mi problema:

print "Say something! " 
input = gets 

Si yo lo llamaría así:

$ ruby script.rb this is arguments 

consigo este error:

script.rb:2:in `gets': No such file or directory - this (Errno::ENOENT) 
from script.rb:2 

esperanza a alguien es capaz de ayudarme a resolver esto, así que puedo continuar mi viaje de Ruby. :)

Edit: Soy consciente de que "Gets" no recuperará los argumentos pasados ​​al archivo. "Gets" consultará al usuario para la entrada. Quiero poder usar ambos métodos dentro de mi aplicación.

Respuesta

80

Si hay argumentos, el método predeterminado gets intenta tratar el primero como un archivo y leer de eso. Para leer de $stdin en una situación así, usted tiene que utilizar explícitamente:

print "Say something! " 
input = $stdin.gets 
+0

Gracias un montón. :) – Sirupsen

+5

stackoverflow; permitiéndome hacer mi trabajo mejor todos los días. – lyonsinbeta

+0

Gracias mucho Chuck. – welbornio

Cuestiones relacionadas