sidekiq perform_in perform_at не работает

#ruby-on-rails #sidekiq

#ruby-on-rails #sidekiq

Вопрос:

Я использую Sidekiq

в моем gemfile у меня есть:

 #gemfile 
gem 'sidekiq', '~> 6.0.7'
  

Теперь моя модель выглядит так

 class Special < ActiveRecord::Base
  def set_queue
    if send_at.present? # send at is a data time
      SpecialQueueClientsJob.perform_at(self.send_at, self)
    end
  end
end
  

Это код для моей работы, и он работает идеально, когда я просто вызываю его нормально SpecialQueueClientsJob.perform_later(special: self)

 class SpecialQueueClientsJob < ApplicationJob
  queue_as :default
  def perform(special)
    ...
  end
end
  

https://github.com/mperham/sidekiq

Я получаю сообщение об ошибке undefined method perform_at’ для SpecialQueueClientsJob`

Я смотрю на https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs

Sidekiq позволяет запланировать время, когда задание будет выполнено. Вы используете perform_in(интервал_в_секундах, * аргументы) или perform_at(временная метка, * аргументы) вместо стандартного perform_async(* аргументы):

MyWorker.perform_in(3.hours, ‘mike’, 1) MyWorker.perform_at(3.hours.from_now, ‘mike’, 1) Это полезно, например, если вы хотите отправить пользователю электронное письмо через 3 часа после регистрации. Задания, запланированные в прошлом, ставятся в очередь для немедленного выполнения.

Комментарии:

1. Я предполагаю, что вы используете ActiveJob, Sidekiq API не применяется.