Sha256: 052a717ec99b063c513d0d95e10871a8188ba0fdac04dcc917c56e7d35e95483

Contents?: true

Size: 1.14 KB

Versions: 2

Compression:

Stored size: 1.14 KB

Contents

module Sidekiq
  module Monitor
    class Job < ActiveRecord::Base
      attr_accessible :args, :class_name, :enqueued_at, :finished_at, :jid, :name, :queue, :result, :retry, :started_at, :status

      serialize :args
      serialize :result

      after_destroy :delete_sidekiq_job

      STATUSES = [
        'queued',
        'running',
        'complete',
        'failed'
      ]

      def sidekiq_item
        job = sidekiq_job
        job ? job.item : nil
      end

      def sidekiq_job
        sidekiq_queue = Sidekiq::Queue.new(queue)
        sidekiq_queue.each do |job|
          return job if job.jid == jid
        end
        nil
      end

      def delete_sidekiq_job
        return true unless status == 'queued'
        job = sidekiq_job
        job.delete if job
      end

      def self.destroy_by_queue(queue, conditions={})
        jobs = where(conditions).where(status: 'queued', queue: queue).destroy_all
        jids = jobs.map(&:jid)
        sidekiq_queue = Sidekiq::Queue.new(queue)
        sidekiq_queue.each do |job|
          job.delete if conditions.blank? || jids.include?(job.jid)
        end
        jobs
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sidekiq_monitor-0.0.6 app/models/sidekiq/monitor/job.rb
sidekiq_monitor-0.0.5 app/models/sidekiq/monitor/job.rb