module ResqueSpec
Constants
- VERSION
Attributes
disable_ext[RW]
inline[RW]
Public Instance Methods
dequeue(queue_name, klass, *args)
click to toggle source
# File lib/resque_spec.rb, line 11 def dequeue(queue_name, klass, *args) queue_by_name(queue_name).delete_if do |job| job[:class] == klass.to_s && args.empty? || job[:args] == args end end
enqueue(queue_name, klass, *args)
click to toggle source
# File lib/resque_spec.rb, line 17 def enqueue(queue_name, klass, *args) perform_or_store(queue_name, :class => klass.to_s, :args => args) end
enqueue_at(time, klass, *args)
click to toggle source
# File lib/resque_spec/scheduler.rb, line 52 def enqueue_at(time, klass, *args) enqueue_at_with_queue(schedule_queue_name(klass), time, klass, *args) end
enqueue_at_with_queue(queue, time, klass, *args)
click to toggle source
# File lib/resque_spec/scheduler.rb, line 56 def enqueue_at_with_queue(queue, time, klass, *args) is_time?(time) perform_or_store(queue, :class => klass.to_s, :time => time, :stored_at => Time.now, :args => args) end
enqueue_in(time, klass, *args)
click to toggle source
# File lib/resque_spec/scheduler.rb, line 61 def enqueue_in(time, klass, *args) enqueue_at(Time.now + time, klass, *args) end
enqueue_in_with_queue(queue, time, klass, *args)
click to toggle source
# File lib/resque_spec/scheduler.rb, line 65 def enqueue_in_with_queue(queue, time, klass, *args) enqueue_at_with_queue(queue, Time.now + time, klass, *args) end
peek(queue_name, start = 0, count = 1)
click to toggle source
# File lib/resque_spec.rb, line 45 def peek(queue_name, start = 0, count = 1) queue_by_name(queue_name).slice(start, count) end
perform_all(queue_name)
click to toggle source
# File lib/resque_spec.rb, line 25 def perform_all(queue_name) queue = queue_by_name(queue_name) until queue.empty? perform(queue_name, queue.shift) end end
perform_next(queue_name)
click to toggle source
# File lib/resque_spec.rb, line 21 def perform_next(queue_name) perform(queue_name, queue_by_name(queue_name).shift) end
pop(queue_name)
click to toggle source
# File lib/resque_spec.rb, line 32 def pop(queue_name) return unless payload = queue_by_name(queue_name).shift new_job(queue_name, payload) end
queue_by_name(name)
click to toggle source
# File lib/resque_spec.rb, line 37 def queue_by_name(name) queues[name.to_s] end
queue_for(klass)
click to toggle source
# File lib/resque_spec.rb, line 41 def queue_for(klass) queue_by_name(queue_name(klass)) end
queue_name(klass)
click to toggle source
# File lib/resque_spec.rb, line 49 def queue_name(klass) if klass.is_a?(String) klass = Kernel.const_get(klass) rescue nil end name_from_instance_var(klass) or name_from_queue_accessor(klass) or raise ::Resque::NoQueueError.new("Jobs must be placed onto a queue.") end
queues()
click to toggle source
# File lib/resque_spec.rb, line 59 def queues @queues ||= Hash.new {|h,k| h[k] = []} end
remove_delayed(klass, *args)
click to toggle source
# File lib/resque_spec/scheduler.rb, line 69 def remove_delayed(klass, *args) sched_queue = queue_by_name(schedule_queue_name(klass)) count_before_remove = sched_queue.length sched_queue.delete_if do |job| job[:class] == klass.to_s && job[:args] == args end # Return number of removed items to match Resque Scheduler behaviour count_before_remove - sched_queue.length end
reset!()
click to toggle source
# File lib/resque_spec.rb, line 63 def reset! queues.clear self.inline = false end
schedule_for(klass)
click to toggle source
# File lib/resque_spec/scheduler.rb, line 79 def schedule_for(klass) queue_by_name(schedule_queue_name(klass)) end
Private Instance Methods
decode(object)
click to toggle source
# File lib/resque_spec.rb, line 110 def decode(object) Resque.decode(object) end
encode(object)
click to toggle source
# File lib/resque_spec.rb, line 106 def encode(object) Resque.encode(object) end
is_time?(time)
click to toggle source
# File lib/resque_spec/scheduler.rb, line 85 def is_time?(time) time.to_i end
name_from_instance_var(klass)
click to toggle source
# File lib/resque_spec.rb, line 70 def name_from_instance_var(klass) klass.instance_variable_get(:@queue) end
name_from_queue_accessor(klass)
click to toggle source
# File lib/resque_spec.rb, line 74 def name_from_queue_accessor(klass) klass.respond_to?(:queue) and klass.queue end
new_job(queue_name, payload)
click to toggle source
# File lib/resque_spec.rb, line 78 def new_job(queue_name, payload) Resque::Job.new(queue_name, payload_with_string_keys(payload)) end
payload_with_string_keys(payload)
click to toggle source
# File lib/resque_spec.rb, line 98 def payload_with_string_keys(payload) { 'class' => payload[:class], 'args' => decode(encode(payload[:args])), 'stored_at' => payload[:stored_at] } end
perform(queue_name, payload)
click to toggle source
# File lib/resque_spec.rb, line 82 def perform(queue_name, payload) new_job(queue_name, payload).perform end
perform_or_store(queue_name, payload)
click to toggle source
# File lib/resque_spec.rb, line 86 def perform_or_store(queue_name, payload) if inline perform(queue_name, payload) else store(queue_name, payload) end end
schedule_queue_name(klass)
click to toggle source
# File lib/resque_spec/scheduler.rb, line 89 def schedule_queue_name(klass) "#{queue_name(klass)}_scheduled" end
store(queue_name, payload)
click to toggle source
# File lib/resque_spec.rb, line 94 def store(queue_name, payload) queue_by_name(queue_name) << payload end