Sha256: 5d16d7adb2245857baf8dbae9dd937ea76d019f1aa9a16d803ab12cb676c721e

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

module Resque
  module Plugins
    module DynamicQueues

      KEY_PREFIX = "dynamic_queue"
      FALLBACK_KEY = "default"

      module Attributes

        def get_dynamic_queue(key)
          queue_names = redis.lrange("#{KEY_PREFIX}:#{key}", 0, -1)

          if queue_names.nil? || queue_names.size == 0
            queue_names = redis.lrange("#{KEY_PREFIX}:#{FALLBACK_KEY}", 0, -1)
          end
          
          if queue_names.nil? || queue_names.size == 0
            queue_names = Resque.queues
          end

          return queue_names
        end

        def set_dynamic_queue(key, values)
          k = "#{KEY_PREFIX}:#{key}"
          redis.multi do
            redis.del(k)
            Array(values).each do |v|
               redis.rpush(k, v)
            end
          end
        end

        def get_dynamic_queues
          dqueues = redis.keys("#{KEY_PREFIX}:*") || []
          dqueues = dqueues.collect{|q| q.gsub('dynamic_queue:', '')}
          dqueues << FALLBACK_KEY unless dqueues.include?(FALLBACK_KEY)
          return dqueues
        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
resque-dynamic-queues-0.6.1 lib/resque/plugins/dynamic_queues/attributes.rb