Ruby ARGF和额外参数不稳定

时间:2014-11-24 21:36:41

标签: ruby linux unix terminal

我有一个Ruby程序(学校项目),我需要指定一个服务器和端口,如下所示:

ruby program.rb -s servername -p 8080

我还需要能够将文件作为STDIN输入(使用linux / unix终端中的<运算符)

ruby program.rb -s servername -p 8080 < testfile.txt

我制作了一个仅puts gets的测试ruby脚本。像这样运行时

ruby test.rb -s servername -p 8080 < testfile.txt  

我收到此错误:

test.rb:5:in 'gets': No such file or directory @ rb_sysopen - -s (Errno::ENOENT)

当我玩这些参数时,看起来Ruby正试图打开一个文件,其中包含第一个参数的名称(在本例中为“-s”)而不是<运算符后指定的文件

有什么方法可以解决这个问题?我在Ruby 2.1.0和2.1.5上都遇到了同样的错误。

编辑:刚试过做STDIN.readline,它工作正常......什么???

1 个答案:

答案 0 :(得分:0)

当您拨打gets时,您正在呼叫Kernel#gets

当您致电STDIN.gets时,您正在呼叫IO#gets

我同意,这有点不稳定。