2017-06-20 62 views
0

我有一個rake任務,我希望可以給它選擇stdin,以下任何一種情況可以工作:(可選)允許將STDIN傳遞給rake任務

rake my_task 
cat foo.txt | rake my_task 

的問題是,我沒有一個可靠的方法來檢查STDIN是否對方案。這是我當前的嘗試,它只是掛起不定:

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

我加入了STDIN.tty?閱讀how-can-you-check-for-stdin-input-in-a-ruby-script後。它是返回true當我調用它與rake my_task(無stdin)

+0

這些充滿希望的一個http://cobwwweb.com/4-ways-to-pass-arguments-to-a-rake-task選項爲你工作 – fanta

+0

我認爲你只需要反轉你的條件,也就是說,如果它是_not_ tty(它是一個管道),你想讀'$ stdin'。 – matt

+0

@matt你是對的,隨時可以添加答案或我會 –

回答

0

你只需要反轉的條件。你想要的是,如果它不一個 TTY讀取標準輸入:

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

編輯使用,除非不用'if! –