Неверное количество аргументов (дано 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