0

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_jobgem をインストールしたことです。

config/application.rb

config.active_job.queue_adapter = :delayed_job

現在はリダイレクトされ、ジョブはまったく実行されません。

どんな助けでも大歓迎です。

4

2 に答える 2

0

特定の時間に実行する遅延ジョブ セットを作成し、開発中にその実行を監視できるという印象を受けました。開発モードでは、ジョブを手動で開始する必要があるようです。このブログによると..

Railsで遅延ジョブを実装する簡単な手順

ジョブ プロセスを開始する これには 2 つの方法があります。

アプリケーションが開発モードの場合は、代わりに以下の rake タスクを使用します。

rake jobs:work

アプリケーションが本番モードの場合は、「delayed_job」スクリプトを使用することをお勧めします。

rakeまた、このタスクはサーバーと並行して実行できることも学びました。実行し続けると、アプリを操作するときにジョブが実行されます。

于 2015-07-05T18:20:29.437 に答える