【问题标题】:Ruby ARGF and extra parameters wonky [duplicate]Ruby ARGF和额外参数不稳定[重复]
【发布时间】: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”)打开一个文件,而不是在 &lt; 运算符之后指定的文件。

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

编辑:刚刚尝试做 STDIN.readline 并且效果很好......什么???

【问题讨论】:

  • 代码可能更容易调试。
  • 首先,考虑作为学习过程的一部分,您是否想为您的学校项目获得答案,您应该自己解决这个问题。请记住,我们添加的任何答案都很容易被老师/教授找到。而且,正如@DaveNewton 所说,如果我们要帮助您解决任何超出疯狂猜测的问题,我们需要查看代码。

标签: ruby linux unix terminal


【解决方案1】:

当您调用gets 时,您正在调用Kernel#gets

当您拨打STDIN.gets 时,您拨打的是IO#gets

我同意,这有点不靠谱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    相关资源
    最近更新 更多