0

私は現在 Rails プロジェクトに取り組んでいます。アプリケーションを使用しているユーザーが進行状況を確認できるように、sidekiq ワーカーの進行状況を保存して保存するように求められました。今、私はこのジレンマに直面しています.テキストファイルに書き出すか、データベースに保存する方が良いですか.

データベースの場合、モデル オブジェクトに保存する方法。情報をログ ファイルに送信するだけで、ワーカーの進行状況を保存できることはわかっています。

クラス YourWorker インクルード Sidekiq::Worker

  def perform
  logger.info { "Things are happening." }
  logger.debug { "Here's some info: #{hash.inspect}" }
  end

では、ワーカーの進行状況をデータ モデルに保存したい場合は、どうすればよいでしょうか?

4

2 に答える 2

0

クラスを作成してJobから、現在作業中のジョブの属性を更新できます。

class Job < ActiveRecord::Base
  # assume that there is a 'status' attribute that is defined as 'text'
end

次に、何かをキューに入れると、新しい を作成し、 のをまたはにJob渡します。idJobperformperform_async

job = Job.create!
YourWorker.perform_async job.id

次に、ワーカーで、作業するジョブの ID を受け取り、そのレコードを取得して更新します。

def perform(job_id)
  job = Job.find job_id
  job.status = "It's happening!"
  job.save
end
于 2013-09-27T03:38:58.150 に答える