私はこのSidekiq労働者を持っている:Sidekiqは引数をperformメソッドにどのように渡しますか?
class DealNoteWorker
include Sidekiq::Worker
sidekiq_options queue: :email
def perform(options = {})
if options[:type] == "deal_watch_mailer"
deal_watchers = DealWatcher.where("deal_id = ?", options[:deal_id])
deal_note = DealNote.find(options[:deal_note_id])
current_user = User.find(options[:current_user_id])
deal_watchers.each do |deal_watcher|
unless deal_watcher.user_id == options[:current_user_id]
# Tell the DealWatchMailer to send emails to ALL watchers advising of change to deal
if deal_watcher.user.active
DealWatchMailer.deal_watch_email(deal_watcher, nil, deal_note, current_user, options[:url]).deliver
end
end
end
elsif options[:type] == "deal_note_mailer"
options[:user_ids].each do |id|
if DealWatcher.where("deal_id = ? and user_id =?", options[:deal_id], id).count == 0
deal_note = Deal.find(options[:deal_note_id])
user = User.find_by_id(id)
DealNoteMailer.deal_note_email(deal_note, user, options[:url]).deliver
end
end
end
end
end
は私がperform_async
メソッドにハッシュを渡すが、私はperform
メソッドに転送パラメータがperform_async
に渡されたものと同じタイプではないと思います。私はユーザlogger.info
とp
に問題をデバッグしようとしましたが、何も出力されませんでした...
ジョブは電子メールキューに追加されますが、決して処理されません。
class DealNoteWorker
include Sidekiq::Worker
def perform(deal_id, deal_note_id, current_user_id, url)
deal_watchers = DealWatcher.where("deal_id = ?", deal_id)
deal_note = DealNote.find(deal_note_id)
current_user = User.find(current_user_id)
deal_watchers.each do |deal_watcher|
unless deal_watcher.user_id == current_user_id
# Tell the DealWatchMailer to send emails to ALL watchers advising of change to deal
if deal_watcher.user.active
DealWatchMailer.deal_watch_email(deal_watcher, nil, deal_note, current_user, url).deliver
end
end
end
end
end
:私も、私は以下の労働者が働くことを事実として知っている...しかし、何もいずれかの出力なかった(第一の方法の行に)
をperform
方法で例外を発生させることを試みました問題はハッシュパラメータ(オプション)にあります。私は何を間違えていますか?
あなたは必ずサイドキックワーカーを始めましたか?別の端末で 'bundle execkiq'を実行してください。また、 'email'というキューを使用しているので、' sidekiq -q email'を実行する必要があります。 –
ええ、それは問題でした。私は電子メールキューでsidekiqを開始する必要がありました。そこでsidekiq.yml設定ファイルにキューのリストを追加し、問題を修正しました。私はそれを受け入れることができるように答えとしてあなたのコメントを追加できますか? –