Rails服务器在使用Process lib时退出

时间:2015-03-05 19:18:40

标签: ruby-on-rails ruby

我使用rails-api gem来构建api。我试图在控制器中使用ruby的Process lib来摆弄像这样的媒体播放器。

def playNext
    Process.exec('musique --next')
end

但是一旦命令执行rails服务器退出。我可能会做一个完全愚蠢的事情。

出了什么问题?我正在使用的方法(可能是愚蠢的)有什么问题吗?

1 个答案:

答案 0 :(得分:1)

Process::exec replaces the current process with the spawned process。一旦生成的进程退出,就不再有父进程恢复运行。

相反,请使用Process::spawn

演示:

puts "About to spawn"
Process.spawn("ls -l | wc -l")
puts "Finished listing via spawn"

puts "About to exec"
exec("ls -l | wc -l")
puts "Finished listing via exec"

输出:

About to spawn
Finished listing via spawn
About to exec
777
777

永远不会调用最终的puts,因为exec有效地终止了Ruby进程并将其替换为子进程。