2015-08-12 2 views

ответ

0

Завершенные задания хранятся в таблице delayed_jobs, и существует модель Delayed::Job, на которой вы можете выполнять запросы.

В столбце handler содержится YAML-закодированная строка объекта, которая будет выполнять работу.

jobs = Delayed::Job.all 
jobs.last.handler # will return you the handler object 

https://github.com/collectiveidea/delayed_job#gory-details

0

Я добавил следующий код в приложение/модели/delayed_job.rb:

class DelayedJob < ActiveRecord::Base 

    def self.find_all_by_class_and_method_and_keys(class_name, method_name, keys={}) 
    search_string="handler like '%object: !ruby/%#{class_name}%method_name: :#{method_name}%' " 
    keys.each do |k,v| 
     search_string+="and handler like '%#{k}: #{v}\n%'" 
    end 
    djs=DelayedJob.find_by_sql("select * from delayed_jobs where #{search_string}") 
    end 

    def self.destroy_all_by_class_and_method_and_keys(class_name, method_name, keys={}) 
    djs=find_all_by_class_and_method_and_keys(class_name, method_name, keys) 
    djs.each do |d| 
     d.destroy 
    end 
    end 

end 

После этого, вы можете просто позвонить DelayedJob.find_all_by_class_and_method_and_keys("MyClassName","my_method_name"), чтобы получить только работу с классом MyClassName и my_method_name в качестве активных объектов записи.

Смежные вопросы