1

errorRails.cache (Memcached に関連付けられている) を使用して、遅延ジョブでフックを使用してコントローラーに例外を渡そうとしています。

私のコントローラ メソッドには次のコード行があり、ジョブが正しく機能していることをテストしました。

Delayed::Job.enqueue(BuildDetail.new)

BuildDetail クラスは /lib/jobs/build_detail.rb ファイルで定義されています。

class BuildDetail

  def perform
    # do some stuff here
  end

  def success(job)
    Rails.cache.write("job_done", true, :expires_in => 4.hours)
  end

  def error(job, exception)
    Rails.cache.write("job_errors", exception, :expires_in => 4.hours)
  end

次に、別のコントローラー メソッドで、次のようなことができるようにしたいと考えています。

def other_controller_method
  job_errors = Rails.cache.read("job_errors")

  case job_errors
    when Timeout::Error
      redirect_to reports_path
      flash[:error] = "You have timed out!"
    else
  #...something else here
  end

end

ただし、case ステートメントのキャッシュ キーからエラー メッセージにアクセスできないようです。私は何を間違っていますか?例外はどのような形式で保存されますか?

4

1 に答える 1

0

ですから、助けを借りて、バックグラウンドジョブの例外をキャッシュキーに保存することが非常に実行可能な解決策であることがわかりました。そこから、私はいくつかの異なることを行いました-JQueryでいくつかのエラーを処理し、いくつかは実際のRailsサーバーで処理しました。私の問題は(Railsを初めて使用する場合)、例外が特定のオブジェクトタイプであることを忘れており、キャッシュ値を渡して文字列として参照できると想定していたことです。

于 2013-02-18T17:04:23.053 に答える