【发布时间】:2013-06-18 21:04:12
【问题描述】:
所以我试图干掉一个 Rake 任务,它运行一个接受用户输入的脚本,I've run into the same problem as this poster - 默认情况下,只调用 gets 假定 rake 参数(在这种情况下,db:seed)是它应该从中读取的文件,当然不存在。我通过调用STDIN.gets 解决了这个问题,它工作正常,但我希望能够像使用puts 一样使用gets(默认情况下,Rake 似乎对STDOUT 没有问题) - 作为静态方法。
有什么方法可以强制Kernel#gets 在 Rake 中读取 STDIN? (或者更一般地说,有什么方法可以强制Kernel#gets 在表面上传递命令行参数时从STDIN 读取?)或者这是一个不好的做法?
【问题讨论】:
-
这实际上是一般的 Ruby 行为,并非特定于 rake;也就是说,任何带有
gets的脚本都会尝试从命令行选项命名的文件中读取。 -
有办法,但为什么呢?
STDIN.gets是一个非常优雅的解决方案,它应该如何完成。其他方法涉及代码调整$stdin,这可能会立即破坏其他东西,或者把你画到角落里。
标签: ruby-on-rails ruby rake