class Announcer::Publishers::RemoteResquePublisher
Public Instance Methods
publish(event)
click to toggle source
Calls superclass method
Announcer::Publishers::Publisher#publish
# File lib/announcer/publishers/remote_resque_publisher.rb, line 10 def publish(event) super # Based on Resque 1.25.2 # Resque call stack: # -> Resque.enqueue(klass, *args) # -> Resque.enqueue_to(queue, klass, *args) # -> Job.create(queue, klass, *args) # -> Resque.push(queue, class: klass.to_s, args: args) # These should be the same as the args passed to Resque.enqueue in # ResquePublisher#publish(event). args = [ event.serialize ] enqueue_to(config.queue.to_s, Publishers::ResquePublisher::PublisherJob, *args) end
redis()
click to toggle source
# File lib/announcer/publishers/remote_resque_publisher.rb, line 30 def redis @redis ||= _redis end
Private Instance Methods
_redis()
click to toggle source
Helper Methods
# File lib/announcer/publishers/remote_resque_publisher.rb, line 69 def _redis if config.redis? config.redis elsif config.redis_url? redis = Redis.connect(url: config.redis_url, thread_safe: true) Redis::Namespace.new(config.redis_namespace.to_sym, redis: redis) else raise Errors::RemoteResquePublisherError, "missing redis configuration" end end
encode(object)
click to toggle source
# File lib/announcer/publishers/remote_resque_publisher.rb, line 60 def encode(object) # This one we can call directly. Resque.encode(object) end
enqueue_to(queue, klass, *args)
click to toggle source
Methods copied from Resque v1.25.2
# File lib/announcer/publishers/remote_resque_publisher.rb, line 40 def enqueue_to(queue, klass, *args) # This is a functionality copy, not a direct code copy. # Here, I'm skipping the call to Job.create(queue, klass, *args) and # calling push directly. push(queue, class: klass.to_s, args: args) end
push(queue, item)
click to toggle source
Resque::push(queue, items)
# File lib/announcer/publishers/remote_resque_publisher.rb, line 48 def push(queue, item) redis.pipelined do watch_queue(queue) redis.rpush "queue:#{queue}", encode(item) end end
watch_queue(queue)
click to toggle source
Resque::watch_queue
# File lib/announcer/publishers/remote_resque_publisher.rb, line 56 def watch_queue(queue) redis.sadd(:queues, queue.to_s) end