(可选)允许将STDIN传递给rake任务

时间:2017-06-20 20:57:16

标签: ruby-on-rails ruby

我有一个rake任务,我希望选择stdin,例如以下任何一种都可以起作用:

rake my_task
cat foo.txt | rake my_task

问题是我没有可靠的方法来检查STDIN是否被赋予该程序。这是我目前的尝试,它只是不确定地挂起:

instructions = STDIN.read.split("\n") if STDIN.tty?

我在阅读how-can-you-check-for-stdin-input-in-a-ruby-script后添加了STDIN.tty?。当我使用true(无标准输入)

调用它时,它返回rake my_task

1 个答案:

答案 0 :(得分:0)

你只需要反转条件。你想要的是读取stdin,如果 tty:

instructions = STDIN.read.split("\n") unless STDIN.tty?