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