2013-02-07 89 views
0

每隔一段時間,我都會啓動使用zsh的iTerm 2來處理教程。有時,當我嘗試運行我的Ruby測試時,它們不會運行。沒有東西會回來。該進程永遠不會運行,我不得不按Ctrl + C來打破它。我的Ruby測試不會運行

這是我運行命令:

ruby -I test/unit/name_of_test.rb 

這種情況與我所有的測試。有時我只需重新啓動計算機。有任何想法嗎?

我也試過使用終端,它也使用zsh。

我在OS X上,使用Ruby 1.9.3和Rails 3.2.8。

回答

1

Doh!在寫這篇文章時,我發現了自己的問題,並認爲我會繼續前進,並提供答案,以防其他人做這件事。我需要調整我的命令中指定的目錄中,像這樣之前包括單詞測試

ruby -I test test/unit/name_of_test.rb 
2

這是不是一個真正的紅寶石,2的iTerm,終端,或zsh的問題。相反,它不瞭解* nix OS應用程序如何處理從STDIN讀取的內容。

您所看到的問題是-I指定了$LOAD_PATH目錄。因此,Ruby正在使用路徑/ to /腳本作爲LOAD_PATH變量,然後掛起,等待來自STDIN的輸入,因爲它沒有看到要運行的腳本。

而不是使用CNTRL + Ç,或重新啓動,使用CNTRL + d。這會關閉輸入流,這會導致Ruby因爲沒有運行命令而退出。在命令行

ruby -I /dev/null 

可以使用進行測試。 Ruby會掛起,等待輸入。關閉輸入,Ruby將立即退出。當然,如果你沒有意識到發生了什麼,你最終可能會向Ruby輸入一些有趣的命令,直到它看到CNTRL + D,然後可能吐出各種信息性消息,但這是可以理解的,因爲就解釋者而言,輸入可能是瘋狂的談話。

就在同CNTRL + d組合使用時,它們從標準輸入讀從各種其他的* nix程序的關閉輸入。

+0

這絕對有幫助。謝謝。雖然在我提供的答案中,我顯然沒有使用正確的語法開頭,所以這當然不能幫助我的情況。 – jthomas