2014-03-25 60 views
2

從測試用例(ActionDispatch :: IntegrationTest)中,我必須啓動一個rails服務器實例。如何禁止使用fork/exec創建的子進程的任何輸出

這是啓動軌道服務器代碼:

@@rails_server_proc = fork do 
    Signal.trap("QUIT") { puts "Killing rails server"; exit } 
    $stdout = nil 
    exec("rails s -e test --port #{@@port}", [:out, :err] => "/dev/null") 
end 
Process.detach(@@rails_server_proc) 

這工作正常,但我無法找到一個方法來抑制軌服務器的標準輸出。

[:out, :err] => "/dev/null"沒有任何影響,我仍然得到服務器輸出在我的測試輸出是這樣的:

Booting Thin 
=> Rails 3.2.11 application starting in test on http://0.0.0.0:3002 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
... 

任何想法?

回答

1

嘗試:

exec("rails s -e test --port #{@@port} >/dev/null 2>&1") 
+0

謝謝,我試過了:沒有效果,仍然得到輸出。 –

+0

你在使用哪個操作系統? – 2014-03-25 08:55:42

+0

MAC OS X(10.8.5) –

相關問題