在后台从 ruby 执行 shell 命令,并使用适当的参数转义



我必须在后台运行一个命令,但我想对其参数进行适当的转义。

system("rake send_mails subject='#{params[:subject]}' 2> /dev/null 1> /dev/null &");

如果我写system("rake", "send_mails", params[:subject])那么我没有用于重定向和&符号的"位置"。如果我不这样做,我没有转义 subject 参数。

我该如何解决这个问题?

在 Ruby 1.9 中,尝试 Process.spawn:

# Spawn a new process and run the rake command
pid = Process.spawn({"subject" => params[:subject]},
                    "rake", "send_mails",
                    :out => 'dev/null', :err => 'dev/null')
# Detach the spawned process
Process.detach pid

最新更新