В настоящее время я перехожу с DJ на sidekiq и у меня есть много старых рубиновых объектов, которые я бы использовал следующим образом:
Delayed::Job.enqueue(SomeService.new(id))
Я подумал, что могу просто переместить SomeService
в папку app/workers
и добавить include Sidekiq::Worker
, но он никогда не попадает в очередь sidekiq, а просто вызовы выполняются на месте
class SomeService
include Sidekiq::Worker
def initialize(id)
@some_instance = SomeClass.find_by(id: id)
end
def perform
@some_instance.do_something
end
end
так что вместо этого я должен создать работника sidekiq для вызова службы
class SomeServiceWorker
include Sidekiq::Worker
def perform(id)
SomeService.new(id).perform
end
end
Есть ли способ просто использовать SomeService, который содержит метод инициализации и метод выполнения, поэтому мне не нужно создавать работника для вызова моего объекта службы?