在测试用例 (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
...
有什么想法吗?
最佳答案
尝试:
exec("rails s -e test --port #{@@port} >/dev/null 2>&1")
关于ruby-on-rails - 如何抑制使用 fork/exec 创建的子进程的任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22628318/