Sha256: df83f50341c0017d7a04a907edb77eb07d867d406104f74a75b0c3f5f4a11134

Contents?: true

Size: 794 Bytes

Versions: 2

Compression:

Stored size: 794 Bytes

Contents

module DjDashboard
  class Job
    def self.fetch(opts={})
      jobs = Delayed::Job.select(:handler).group(:handler).map { |job| { handler: job[:handler].chomp, name: job[:handler].scan(/object:(\w+)\ /).flatten.first } }
      jobs.each do |job|
        job[:running] = Delayed::Job.where("handler like '%#{job[:name]}%'").where("locked_at is not null").count
        job[:failed] = Delayed::Job.where("handler like '%#{job[:name]}%'").where("failed_at is not null and attempts > 3").count
        job[:pending] = Delayed::Job.where("handler like '%#{job[:name]}%'").where(locked_at: nil, failed_at: nil).count
        job[:retrying] = Delayed::Job.where("handler like '%#{job[:name]}%'").where(locked_at: nil).where("failed_at is not null").count
      end
    
      jobs
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dj_dashboard-0.0.2 app/models/dj_dashboard/job.rb
dj_dashboard-0.0.1 app/models/dj_dashboard/job.rb