我如何强制内核#jet使用STDIN#获取rake任务?

时间:2013-06-18 21:04:13

标签: ruby-on-rails ruby rake

所以我试图干掉一个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#getsSTDIN读取?)或者这是不好的做法?

1 个答案:

答案 0 :(得分:0)

(由this comment中的@ the-tin-man回答)

在任何情况下,包括Rake在内,强迫Kernel#getsSTDIN读取,在DRYness中获得的优势实在很小。虽然可以这样做(通过修改$stdin),但不应该这样做,因为它只会是脆弱和黑客。