class Resque::Plugins::Approve::PendingJobQueue
A class representing a queue of Pending jobs.
The queue is named with the approval_key
for all of the jobs in the queue and contains a list of the jobs.
Attributes
approval_key[R]
Public Class Methods
new(approval_key)
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 16 def initialize(approval_key) @approval_key = approval_key end
Public Instance Methods
add_job(job)
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 76 def add_job(job) redis.rpush(queue_key, job.id) job.save! end
approve_all()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 94 def approve_all true while approve_one end
approve_num(num_approve)
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 90 def approve_num(num_approve) num_approve.times { approve_one } end
approve_one()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 82 def approve_one return false if paused_job_skip? id = redis.lpop(queue_key) enqueue_job(id) end
decrement_running()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 33 def decrement_running Resque::Plugins::Approve::ApprovalKeyList.new.add_key approval_key redis.decr(running_key) end
delete()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 56 def delete jobs.each(&:delete) end
first_enqueued()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 144 def first_enqueued jobs(0, 0).first&.queue_time end
increment_running()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 28 def increment_running Resque::Plugins::Approve::ApprovalKeyList.new.add_key approval_key redis.incr(running_key) end
jobs(start = 0, stop = -1)
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 136 def jobs(start = 0, stop = -1) redis.lrange(queue_key, start, stop).map { |id| Resque::Plugins::Approve::PendingJob.new(id) } end
num_ignored()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 47 def num_ignored redis.get(paused_count_key).to_i end
num_jobs()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 140 def num_jobs redis.llen(queue_key) end
num_running()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 20 def num_running redis.get(running_key) end
paged_jobs(page_num = 1, job_page_size = nil)
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 126 def paged_jobs(page_num = 1, job_page_size = nil) job_page_size ||= 20 job_page_size = job_page_size.to_i job_page_size = 20 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
pause()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 38 def pause redis.set(pause_key, true) redis.set(paused_count_key, 0) end
paused?()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 43 def paused? redis.get(pause_key) end
pop_job()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 98 def pop_job return false if paused_job_skip? id = redis.rpop(queue_key) enqueue_job(id) end
remove_all()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 116 def remove_all true while remove_one end
remove_job(job)
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 60 def remove_job(job) redis.lrem(queue_key, 0, job.id) remove_approval_key(job) end
remove_job_pop()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 120 def remove_job_pop id = redis.rpop(queue_key) delete_job(id) end
remove_num(num_approve)
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 112 def remove_num(num_approve) num_approve.times { remove_one } end
remove_one()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 106 def remove_one id = redis.lpop(queue_key) delete_job(id) end
reset_running()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 24 def reset_running redis.set(running_key, 0) end
resume()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 51 def resume redis.del(paused_count_key) redis.del(pause_key) end
verify_job(job)
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 66 def verify_job(job) ApprovalKeyList.new.add_key(job.approval_key) ids = redis.lrange(queue_key, 0, -1) return if ids.include?(job.id) redis.lpush(queue_key, job.id) end
Private Instance Methods
delete_job(id)
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 172 def delete_job(id) return false unless id.present? Resque::Plugins::Approve::PendingJob.new(id).delete true end
enqueue_job(id)
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 164 def enqueue_job(id) return false unless id.present? Resque::Plugins::Approve::PendingJob.new(id).enqueue_job true end
pause_key()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 184 def pause_key @pause_key ||= "approve.job_queue.#{approval_key}.paused" end
paused_count_key()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 192 def paused_count_key @paused_count_key ||= "approve.job_queue.#{approval_key}.paused.count" end
paused_job_skip?()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 156 def paused_job_skip? return false unless paused? redis.incr(paused_count_key) true end
queue_key()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 180 def queue_key @queue_key ||= "approve.job_queue.#{approval_key}" end
remove_approval_key(job)
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 150 def remove_approval_key(job) return unless job.class_name.constantize.auto_delete_approval_key ApprovalKeyList.new.remove_key(approval_key) if num_jobs.zero? end
running_key()
click to toggle source
# File lib/resque/plugins/approve/pending_job_queue.rb, line 188 def running_key @running_key ||= "approve.job_queue.#{approval_key}.running" end