module Resque::Plugins::Queue::Status

Resque::Plugins::Queue::Status. It provides adding simple queue statuses for your jobs. You can specify your own key for your queues and check the status.

You can use it doing extend Resque::Plugins::Queue::Status

For example

class ExampleJob
  extend Resque::Plugins::Queue::Status

  def self.perform()
    puts 'hoge'
  end

end

Resque.enqueue(ExampleJob, queue_status_key: 'hoge')
ExampleJob.current_queue_status('hoge')

The queue status key lasts 24 hours to expire

Constants

COMPLETED
FAILED
IN_PROGESS
STATUSES
VERSION

Public Instance Methods

_namespaced_queue_status(queue_status_key) click to toggle source
# File lib/resque/plugins/queue/status.rb, line 78
def _namespaced_queue_status(queue_status_key)
  return if queue_status_key.nil?

  queue_status_key_name = Resque::Job.decode(
    Resque::Job.encode(queue_status_key)
  )
  "#{_prefix}:#{queue_status_key_name}"
end
_prefix() click to toggle source
# File lib/resque/plugins/queue/status.rb, line 100
def _prefix
  "queuestatus:#{name}"
end
_queue_status_key(args) click to toggle source
# File lib/resque/plugins/queue/status.rb, line 74
def _queue_status_key(args)
  args['queue_status_key'] || args[:queue_status_key]
end
_set_status(args) click to toggle source
# File lib/resque/plugins/queue/status.rb, line 87
def _set_status(args)
  queue_status = _namespaced_queue_status(args[:queue_status_key])
  return if queue_status.nil?

  Resque.redis.set(
    queue_status,
    args.slice(:status, :meta).to_json,
    ex: 24 * 60 * 60
  )

  queue_status
end
after_perform_queue_status(args) click to toggle source
# File lib/resque/plugins/queue/status.rb, line 44
def after_perform_queue_status(args)
  _set_status(
    queue_status_key: _queue_status_key(args),
    status: COMPLETED
  )
end
all_queue_statuses() click to toggle source
# File lib/resque/plugins/queue/status.rb, line 66
def all_queue_statuses
  Resque.redis.keys("#{_prefix}:*")
end
before_enqueue_queue_status(args) click to toggle source
# File lib/resque/plugins/queue/status.rb, line 37
def before_enqueue_queue_status(args)
  _set_status(
    queue_status_key: _queue_status_key(args),
    status: IN_PROGESS
  )
end
clear_all_queue_statuses() click to toggle source
# File lib/resque/plugins/queue/status.rb, line 70
def clear_all_queue_statuses
  Resque.redis.del(*all_queue_statuses) unless all_queue_statuses.empty?
end
current_queue_status(queue_status_key) click to toggle source
# File lib/resque/plugins/queue/status.rb, line 59
def current_queue_status(queue_status_key)
  JSON.parse(
    Resque.redis.get(_namespaced_queue_status(queue_status_key)) || '{}',
    symbolize_names: true
  )
end
on_failure_queue_status(err, args) click to toggle source
# File lib/resque/plugins/queue/status.rb, line 51
def on_failure_queue_status(err, args)
  _set_status(
    queue_status_key: _queue_status_key(args),
    status: FAILED,
    meta: err.to_yaml
  )
end