ruby - Kernel#gets 尝试读取文件而不是标准输入

标签 ruby

我是 Ruby 的新手,今天我编写了一个应用程序,您可以通过 ARGV 向其传递参数。但在我的应用程序中,我希望能够使用“gets”。问题是,每次我尝试这样做时,都会出现错误。

这是一个显示我的问题的简单脚本:

print "Say something! "
input = gets

如果我这样调用它:

$ ruby script.rb this is arguments

我收到这个错误:

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

希望有人能帮我解决这个问题,这样我就可以继续我的 Ruby 之旅。 :)

编辑:我知道“Gets”不会检索传递给文件的参数。 “获取”将查询用户的输入。我希望能够在我的应用程序中使用这两种方法。

最佳答案

如果有参数,默认的 gets 方法会尝试将第一个参数视为文件并从中读取。要在这种情况下从 $stdin 中读取,您必须显式地使用它:

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

关于ruby - Kernel#gets 尝试读取文件而不是标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1883925/

相关文章:

ruby - Mongoid 嵌入式集合响应 :find

ruby-on-rails - 如何获取 Rails 4 activerecord 插入 sql?

ruby - 解析PDF去除月份

ruby - 将图像文件从阵列写入磁盘 : No such file or directory - when using 'w' 的问题

ruby - 匹配大写字母并用后续字母填充,直到一定的字符串长度

ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用?

ruby - 尝试使用多个数据库 - 未建立 ActiveRecord 连接

javascript - 语言之间递归处理的差异

ruby - 你如何在 Ruby 中使用全局变量或常量值?

ruby-on-rails - 如何摆脱归因于 rails 关联的 n+1 查询?