ActiveJobを使用するのはこれが初めてなので、まだ詳細に頭を悩ませています。ボタンを介して保存するとExecute
、非常に長い時間がかかるいくつかの API 呼び出しを実行するフォームがあります。
長い待ち時間なしでページをインデックスにリダイレクトしたいと思います。これが私のコントローラーの作成アクションです..
キャンペーン_コントローラー.rb
def create
@campaign = Campaign.new(campaign_params)
if @campaign.save
flash[:success] = "Campaign Successfully Saved!"
redirect_to campaigns_path
if params[:save_type] == 'Execute'
FolderPushJob.perform_later(@campaign)
end
else
flash[:error] = "There was a problem launching your Campaign."
redirect_to new_campaign_path
end
end
...そして私の仕事は幼児期にある
folder_push_job.rb
class FolderPushJob < ActiveJob::Base
queue_as :default
def perform(campaign)
...some api calls..
end
これを機能させるための最良の方法は何ですか?
アップデート
私が見つけた 1 つの問題は、Job のバックエンドがなかったため、delayed_job
gem をインストールしたことです。
config/application.rb
config.active_job.queue_adapter = :delayed_job
現在はリダイレクトされ、ジョブはまったく実行されません。
どんな助けでも大歓迎です。