所以我试图干掉一个Rake任务,它运行一个接受用户输入的脚本,I've run into the same problem as this poster - 默认情况下,只是调用gets
假定rake参数(在这种情况下, db:seed
)是一个应该从中读取的文件,当然不存在。我通过调用STDIN.gets
来解决这个问题,这很好,但是我希望能够以gets
的方式使用puts
(Rake似乎没有问题)默认为STDOUT
) - 作为静态方法。
有没有办法迫使Kernel#gets
在耙子中读取STDIN
? (或者更一般地说,当表面上传递命令行参数时,有没有办法强制Kernel#gets
从STDIN
读取?)或者这是不好的做法?
答案 0 :(得分:0)
(由this comment中的@ the-tin-man回答)
在任何情况下,包括Rake在内,强迫Kernel#gets
从STDIN
读取,在DRYness中获得的优势实在很小。虽然可以这样做(通过修改$stdin
),但不应该这样做,因为它只会是脆弱和黑客。