前提・実現したいこと
Ruby On RailsでSide Kiq(非同期処理)とActiveJobを使って自動更新機能を実装しているのですがなかなか上手く行かずに困っています。
コードを見る限り問題点がわからないのですが他に何か原因があれば教えていただけると助かります。。
発生している問題
例えば毎月1日の0時を超えるとステータスが変更されるという機能を実装しているところなのですが、0時を過ぎても自動処理が行われません。。
ActiveJobのソースコード
update_order_request_plans_job.rb class UpdateOrderRequestPlansJob < ActiveJob::Base queue_as :default def perform OrderRequestPlan.skip_callback(:save, :before, :set_status_id) OrderRequestPlan.skip_callback(:save, :before, :set_expire_at) expired_orps = OrderRequestPlan.where(status_id: OrderRequestPlan::ENABLE).where('expire_at < ?', Time.current) takeover_plan(expired_orps) prepare_orps = OrderRequestPlan.where(status_id: OrderRequestPlan::PREPARE).where('started_at < ?', Time.current) prepare_orps.each do |prepare_orp| next if OrderRequestPlan.where(user_id: prepare_orp.user_id, status_id: OrderRequestPlan::ENABLE).present? prepare_orp.update(status_id: OrderRequestPlan::ENABLE) end end def takeover_plan(expired_orps) expired_orps.each do |expired_orp| prepare_orp = OrderRequestPlan.find_by(user_id: expired_orp.user_id, status_id: OrderRequestPlan::PREPARE) update_params = { status_id: OrderRequestPlan::EXPIRE } update_params[:cancel_flg] = true if prepare_orp.present? expired_orp.update(update_params) next if expired_orp.cancel_flg == true new_orp = OrderRequestPlan.new(expired_orp.takeover_params) new_orp.started_at = Time.current.beginning_of_month new_orp.set_expire_at new_orp.save end end end
Side Kiqのソースコード
sidekiq_scheduler.yml update_order_request_plans: cron: "0 0 1 * * Asia/Tokyo" class: "UpdateOrderRequestPlansJob" args: description: "更新"
補足情報(FW/ツールのバージョンなど)
一度は自動更新の処理ができていたのですが、なぜか処理されなくなりました。。
コード自体は変えていないので何か原因があるのであれば教えていただきたいです。。
どうぞよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。