class Zulu::Topic
Constants
- KEY_PREFIX
- UPCOMING_KEY
Public Class Methods
happening(now=Time.now)
click to toggle source
# File lib/zulu/topic.rb, line 10 def self.happening(now=Time.now) Zulu.redis.zrangebyscore(UPCOMING_KEY, 0, now.to_i) end
new(options={})
click to toggle source
# File lib/zulu/topic.rb, line 14 def initialize(options={}) @id = options[:id] @topic = options[:topic] end
Public Instance Methods
==(other)
click to toggle source
# File lib/zulu/topic.rb, line 19 def ==(other) id == other.id end
destroy()
click to toggle source
# File lib/zulu/topic.rb, line 67 def destroy Zulu.redis.multi do Zulu.redis.del "#{KEY_PREFIX}:#{id}" Zulu.redis.zrem(UPCOMING_KEY, id) end end
id()
click to toggle source
# File lib/zulu/topic.rb, line 23 def id @id ||= Digest::MD5.hexdigest @topic end
next_time(now=Time.now)
click to toggle source
# File lib/zulu/topic.rb, line 52 def next_time(now=Time.now) parser.next_time(now) end
parser()
click to toggle source
# File lib/zulu/topic.rb, line 48 def parser @parser ||= Rufus::CronLine.new(topic) end
reset_next(now=Time.now)
click to toggle source
# File lib/zulu/topic.rb, line 56 def reset_next(now=Time.now) Zulu.redis.zadd(UPCOMING_KEY, next_time(now).to_i, id) end
save()
click to toggle source
# File lib/zulu/topic.rb, line 60 def save Zulu.redis.multi do Zulu.redis.set "#{KEY_PREFIX}:#{id}", topic reset_next end end
subscribe(subscription_id)
click to toggle source
# File lib/zulu/topic.rb, line 39 def subscribe(subscription_id) Zulu.redis.sadd("#{KEY_PREFIX}:#{id}:subscriptions", subscription_id) end
subscriptions()
click to toggle source
# File lib/zulu/topic.rb, line 35 def subscriptions Zulu.redis.smembers("#{KEY_PREFIX}:#{id}:subscriptions") end
subscriptions_count()
click to toggle source
# File lib/zulu/topic.rb, line 31 def subscriptions_count Zulu.redis.scard("#{KEY_PREFIX}:#{id}:subscriptions") end
topic()
click to toggle source
# File lib/zulu/topic.rb, line 27 def topic @topic ||= Zulu.redis.get "#{KEY_PREFIX}:#{id}" end
unsubscribe(subscription_id)
click to toggle source
# File lib/zulu/topic.rb, line 43 def unsubscribe(subscription_id) Zulu.redis.srem("#{KEY_PREFIX}:#{id}:subscriptions", subscription_id) destroy if subscriptions_count == 0 end