私はRails 4.2をUnicorn上で実行しています。Rails - shスクリプトでdelayed_jobを実行
私のアプリケーションからshスクリプトを呼び出す必要がありますが、私のコントローラはSHスクリプトを呼び出し、SHスクリプトが実行されるのを待つ必要はありません。
私は現在、私はdelayed_jobの宝石をインストールし、このためにsystem(@jobCall)
とshスクリプトを呼び出します。ジョブが完了するのを待たずにsystem(@jobCall)
を実行するにはどうすればよいですか?
全下記の方法でコードを作成しますので、システム()、)私はルビー/ Railsのに慣れていないですが、ちょうど呼び出しシステム(
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&''最後に '&'を通知します。 – kiddorails