【发布时间】:2015-01-22 17:48:59
【问题描述】:
我有一个 Ruby 程序(学校项目),我需要像这样指定服务器和端口:
ruby program.rb -s servername -p 8080
我还需要能够将文件作为 STDIN 输入(在 linux/unix 终端中使用
ruby program.rb -s servername -p 8080 < testfile.txt
我制作了一个测试 ruby 脚本,它只是 puts gets。像这样运行时
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 并且效果很好......什么???
【问题讨论】:
-
代码可能更容易调试。
-
首先,考虑作为学习过程的一部分,您是否想为您的学校项目获得答案,您应该自己解决这个问题。请记住,我们添加的任何答案都很容易被老师/教授找到。而且,正如@DaveNewton 所说,如果我们要帮助您解决任何超出疯狂猜测的问题,我们需要查看代码。