1

所以我试图干掉一个运行接受用户输入的脚本的 Rake 任务,并且我遇到了与此海报相同的问题- 默认情况下,只是调用gets假定 rake 参数(在这种情况下,db:seed)是它应该从中读取的文件,当然不存在。我通过调用来解决这个问题STDIN.gets,它工作正常,但我希望能够使用gets我可以使用的方式puts(默认情况下 Rake 似乎没有问题STDOUT) - 作为静态方法。

有没有办法强制Kernel#getsSTDINRake 中读取?(或者更一般地说,有什么方法可以强制Kernel#gets从表面上传递命令行参数时读取STDIN?)或者这是一个不好的做法?

4

1 回答 1

0

(由@the-tin-man 在此评论中回答)

在包括 Rake 在内的任何上下文中强制Kernel#gets读取DRYness 确实没有什么优势。STDIN尽管可以(通过修改$stdin)来完成,但不应该这样做,因为它会变得脆弱和笨拙。

于 2014-12-08T04:55:14.263 回答