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
Calls superclass method
Resque::Plugins::JobHistory::HistoryDetails::new
# 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