Неверное количество аргументов (дано 1, ожидается 2) с Resque Worker

Я понимаю, что для метода self.perform нужны два аргумента, и я передаю их. Могу заверить вас, что переменные экземпляра имеют значения, потому что я проверил. Что вы видите, я делаю не так?

контроллер:

Resque.enqueue_to(:high, SendInvitationEmail, user_token: @user.token, invitee_token: @invitee.token)

рабочий:

class SendInvitationEmail
  def self.perform(user_token, invitee_token)
      Frontend::UserManagementMailer.invitation_email(user_token, invitee_token)
  end
end

Ошибка:

wrong number of arguments (given 1, expected 2) line 3

1 ответ

Решение

Проблема в том, что вы передаете аргументы enqueue_to в качестве аргументов ключевых слов или Hash,

Вместо этого удалите ключи и передайте аргументы как таковые.

Resque.enqueue_to(:high, SendInvitationEmail, @user.token, @invitee.token)

Или вы можете изменить сигнатуру метода execute, чтобы принимать хеш или аргументы ключевого слова как

class SendInvitationEmail
  def self.perform(user_token:, invitee_token:)
      Frontend::UserManagementMailer.invitation_email(user_token, invitee_token)
  end
end
Другие вопросы по тегам