0

這是我第一次使用ActiveJob,所以我仍然圍繞細節。我有一個表單,當通過Execute按鈕保存時,它會執行一些需要很長時間的API調用。Rails 4.2:重定向後的活動作業

我希望頁面可以在沒有漫長等待的情況下重定向到索引。這裏是我的控制器創建行動..

campaigns_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 

什麼是最好的方式來完成這項工作?

UPDATE

的一個問題是,我發現我沒有作業的後臺,所以我安裝了delayed_job寶石。

的config/application.rb中

config.active_job.queue_adapter = :delayed_job 

現在重定向,並且不運行在所有的工作。

任何幫助,高度讚賞。

回答

0

我的印象是,我可以在某個時間同時建立了延遲的作業設置運行開發,看它運行。看來,在開發模式下,我必須手動啓動作業。根據這一博客..

Simple Steps to Implement Delayed Job in Rails

啓動作業過程中,有兩種方法可以做到這一點。

如果應用程序處於開發模式,我們將使用下面的rake 任務。

rake jobs:work 

如果應用程序是在生產模式下,則優選使用 「delayed_job的」腳本。

我還了解到,rake任務可以與服務器一起運行。讓它繼續運行,它將在您與應用程序交互時執行作業。

0

您,是因爲您的方式軌執行重定向的redirect_to時之前執行的工作,從來沒有叫工作

+0

redirect_to的順序沒有什麼區別,仍然得到相同的結果。無論這個作業是否存在,它都不會運行。 – shroy