如何抑制使用fork / exec创建的子进程的任何输出

时间:2014-03-25 07:49:32

标签: ruby-on-rails testing exec fork

在测试用例(ActionDispatch :: IntegrationTest)中,我必须启动一个rails服务器实例。

这是启动rails服务器的代码:

@@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)

工作正常,但我无法找到抑制rails服务器STDOUT的方法。

[: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 个答案:

答案 0 :(得分:1)

尝试:

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