Вопрос

How I can do something like that at sidekiq?

Gateway::AddUser.delay.new(6).call

For now, Gateway::AddUser.delay.new(6) return a string, and call method trying to run on it. But I want to call just Gateway::AddUser.new(6).call delayed

Это было полезно?

Решение

Solved just like this:

Gateway::AddUser.delay.perform(6)

Where perform method is:

def self.perform(params)
  new(params).call
end

Just rewrite 2 methods to 1 =)

Другие советы

why don't you just wrap that in other method?

class User
  def self.add_user_via_gateway(attributes)
    Gateway::AddUser.new(attributes).call
  end
end

User.delay.add_user_via_gatway(attributes)

EDIT:

If you prefer, you can also create a worker class.

class AddUserViaGatewayWorker
  include Sidekiq::Worker

  def perform(attributes)
    Gateway::AddUser.new(attributes).call
  end
end

AddUserViaGatewayWorker.perform_async(attributes)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top