这是我第一次使用ActiveJob,所以我还在纠结细节。我有一个表单,当通过Execute
按钮保存时,它会执行一些需要很长时间的 API 调用。
我希望页面无需长时间等待即可重定向到索引。这是我的控制器的创建操作..
campaign_controller.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
完成这项工作的最佳方法是什么?
更新
我发现的一个问题是我没有 Job 的后端,所以我安装了delayed_job
gem。
配置/应用程序.rb
config.active_job.queue_adapter = :delayed_job
现在它重定向并且根本不运行作业。
非常感谢任何帮助。