Sha256: 7ee09f0ed7244a6064cc16c0a609be1eba2486a122c31342bdfe6650f7b4608f

Contents?: true

Size: 676 Bytes

Versions: 1

Compression:

Stored size: 676 Bytes

Contents

require "redis"
require "json"

module Juggernaut
  def redis_options
    @redis_options ||= {}
  end
  
  def publish(channels, data, options = {})
    message = ({:channels => Array(channels).uniq, :data => data}).merge(options)
    redis.publish(key, message.to_json) 
  end
  
  def subscribe
    Redis.new(redis_options).subscribe(key(:subscribe), key(:unsubscribe)) do |on|
      on.message do |type, msg|
        yield(type.gsub(/^juggernaut:/, "").to_sym, JSON.parse(msg))
      end
    end
  end
  
  protected
    def redis
      @redis ||= Redis.new(redis_options)
    end
  
    def key(*args)
      args.unshift(:juggernaut).join(":")
    end

    extend self
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
juggernaut-2.0.0.beta3 lib/juggernaut.rb