Я пытаюсь заставить мою систему автоматически удалять соответствующие запланированные задачи 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: целое число
Как сравнить переменные с аргументами почтовой программы?