class Resque::Plugins::JobHistory::HistoryList

JobHistory cleanup functions to allow the user to cleanup Redis for histories.

Attributes

list_name[RW]

Public Class Methods

new(class_name, list_name, list_maximum = nil) click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 10
def initialize(class_name, list_name, list_maximum = nil)
  super(class_name)

  @list_name    = list_name
  @list_maximum = list_maximum
end

Public Instance Methods

add_job(job_id, class_name) click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 17
def add_job(job_id, class_name)
  add_to_job_history

  job_count = redis.lpush(job_list_key, job_id)
  save_class_information(job_id, class_name)
  redis.incr(total_jobs_key)

  delete_old_jobs(job_count)
end
includes_job?(job_id) click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 66
def includes_job?(job_id)
  job_ids.include?(job_id)
end
job_classes_key() click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 70
def job_classes_key
  "#{job_history_base_key}.#{list_name}_job_classes"
end
job_ids(start = 0, stop = -1) click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 48
def job_ids(start = 0, stop = -1)
  redis.lrange(job_list_key, start, stop)
end
jobs(start = 0, stop = -1) click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 42
def jobs(start = 0, stop = -1)
  job_ids(start, stop).map do |job_id|
    Resque::Plugins::JobHistory::Job.new(job_class(job_id), job_id)
  end
end
latest_job() click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 60
def latest_job
  job_id = redis.lrange(job_list_key, 0, 0).first

  Resque::Plugins::JobHistory::Job.new(job_class(job_id), job_id) if job_id
end
num_jobs() click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 52
def num_jobs
  redis.llen(job_list_key)
end
paged_jobs(page_num = 1, job_page_size = nil) click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 32
def paged_jobs(page_num = 1, job_page_size = nil)
  job_page_size ||= page_size
  job_page_size = job_page_size.to_i
  job_page_size = Resque::Plugins::JobHistory::PAGE_SIZE if job_page_size < 1
  start         = (page_num - 1) * job_page_size
  start         = 0 if start >= num_jobs || start.negative?

  jobs(start, start + job_page_size - 1)
end
remove_job(job_id) click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 27
def remove_job(job_id)
  redis.lrem(job_list_key, 0, job_id)
  remove_job_data(job_id)
end
total() click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 56
def total
  redis.get(total_jobs_key).to_i
end

Private Instance Methods

add_to_job_history() click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 76
def add_to_job_history
  return if class_name.blank?

  redis.sadd(Resque::Plugins::JobHistory::HistoryDetails.job_history_key, class_name)
end
delete_old_jobs(job_count) click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 88
def delete_old_jobs(job_count)
  while num_jobs > max_jobs
    job_id         = redis.rpop(job_list_key)
    job_class_name = job_class(job_id)

    remove_job_data(job_id)

    Resque::Plugins::JobHistory::Job.new(job_class_name, job_id).safe_purge

    job_count -= 1
  end

  job_count
end
job_class(job_id) click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 111
def job_class(job_id)
  redis.hget(job_classes_key, job_id) || class_name
end
job_list_key() click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 107
def job_list_key
  "#{job_history_base_key}.#{list_name}_jobs"
end
max_jobs() click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 82
def max_jobs
  @list_maximum ||= class_history_len
  @list_maximum = 0 if @list_maximum.negative?
  @list_maximum
end
remove_job_data(job_id) click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 121
def remove_job_data(job_id)
  redis.hdel(job_classes_key, job_id)
end
save_class_information(job_id, job_class_name) click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 115
def save_class_information(job_id, job_class_name)
  return unless class_name.blank? || job_class_name != class_name

  redis.hset job_classes_key, job_id, job_class_name
end
total_jobs_key() click to toggle source
# File lib/resque/plugins/job_history/history_list.rb, line 103
def total_jobs_key
  "#{job_history_base_key}.total_#{list_name}_jobs"
end