【发布时间】:2016-09-01 04:50:19
【问题描述】:
我在 Unicorn 上运行 Rails 4.2。
我需要从我的应用程序调用一个 sh 脚本,但我需要我的控制器调用 SH 脚本而不是等待 SH 脚本运行。
我目前用system(@jobCall)调用sh脚本
为此,我安装了delayed_job gem。如何在不等待作业完成的情况下运行system(@jobCall)?
完整的创建方法代码如下:
def create
@job = Job.new(job_params)
respond_to do |format|
if @job.save
@jobCall = 'sh /home/some.user/kitchen.sh'
system(@jobCall) ##need to call this and not wait for job to finish
format.html { redirect_to @job, notice: 'Job ran'}
format.json { render :show, status: :created, location: @job }
else
format.html { render :new }
format.json { render json: @job.errors, status: :unprocessable_entity }
end
end
end
【问题讨论】:
-
虽然不是一个好的解决方案,但您可以使用
&并在后台运行该处理。@jobCall = 'sh /home/some.user/kitchen.sh &'最后通知&。