Как запросить задачу Mailer - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь заставить мою систему автоматически удалять соответствующие запланированные задачи sidekiq при удалении их соответствующего объекта с помощью метода destroy в контроллере.

Рассматриваемые задачи - это отправители действий, добавленные в Sidekiq «запланированная» очередь. В определенный момент c мне нужно проверить каждую из этих задач и сравнить аргументы с идентификатором модели.

Для этого я заполняю массив запланированных задач и выполняю их;

scheduled_queue = Sidekiq::ScheduledSet.new
scheduled_queue.each do |job| 
  condition = true if job.args[0] == @object.id
end

Однако я не могу манипулировать аргументами в любой сопоставимой форме. Кажется, что все параметры присутствуют в [0] массива job.args.

<%= job.args.size %> #Returns 1
<%= job.args.first %> #Returns below
---
job_class: ActionMailer::DeliveryJob
job_id: 28c966f3-3fbd-4963-a9cc-64e609803246
provider_job_id: 
queue_name: mailers
priority: 
arguments:
- ResponseMailer
- reminder_email
- deliver_now
- 29
- Third reminder
- 9095
executions: 0
locale: en
<%= job.args.first.class %> #Returns !ruby/class 'Hash'

Видимо, это ха sh, но job.args.first.keys выдает ошибку.

неопределенный метод "keys" для 9: целое число

Как сравнить переменные с аргументами почтовой программы?

1 Ответ

0 голосов
/ 05 февраля 2020

Удалось найти код для доступа к указанному c аргументу (x);

job.args.first['arguments'].[x]

Неопределенная ошибка "ключей" метода была вызвана задачами в запланированной очереди, которые были отформатированы по-разному. Моя ошибка заключалась в том, чтобы выполнять все задачи в очереди, а не отфильтровывать ненужные.

...