0

Railsでdelayed_jobsを使用して、長時間実行されるWebリクエストプロセスをオフロードし、結果を変数として保存して後でコードにアクセスできるようにする方法を学ぼうとしています. これを行う最善の方法は何ですか?

私のコントローラーコードのメソッド内で、私は以下を使用しています:

Delayed::Job.enqueue(BuildDetail.new)

次に、lib/build_detail.rb でクラスを定義します (コントローラーでファイルを必要とします)。

class BuildDetail

  def perform
    ...
    # some web request processing is here
    ...
    # the code returns the results of the web request processing as a variable:
    @newvar = ...
  end   

end

これが私の課題です。@newvar 値にアクセスして、別のコントローラー メソッドで使用できるようにする必要があります。@newvar 値を参照する方法が完全にはわかりません。delayed_jobs の処理はバックグラウンドで処理されるため、何らかのキャッシュ プロセスでこれを処理する必要がありますか、または変数に直接アクセスすることは可能ですか?

4

2 に答える 2

0

そのデータをデータベース、mongo、redisなどに保存する必要があります。ジョブは別のプロセスで実行されるため(完了すると破棄されるため)、直接アクセスすることはできません。

于 2013-01-24T18:37:00.593 に答える
0

単一の変数を格納するだけでよい場合は、それを memcache に追加できます。Rails アプリケーションで既にキャッシュを使用している場合は、これが最適です。コントローラーで後でアクセスされる変数を保存するために memcache を使用することについて話しているこの他の質問を参照できます。

Railsワーカーからmemcachedストアに値を保存する方法

于 2013-01-24T19:14:23.227 に答える