Class: Weeter::Plugins::Subscription::Redis

Inherits:
Object
  • Object
show all
Includes:
Net::Redis
Defined in:
lib/weeter/plugins/subscription/redis.rb

Instance Method Summary collapse

Methods included from Net::Redis

#create_redis_client

Constructor Details

#initialize(client_app_config) ⇒ Redis

Returns a new instance of Redis.



9
10
11
# File 'lib/weeter/plugins/subscription/redis.rb', line 9

def initialize(client_app_config)
  @config = client_app_config
end

Instance Method Details

#get_initial_filters(&block) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/weeter/plugins/subscription/redis.rb', line 13

def get_initial_filters(&block)
  deferred_get = redis.get(@config.subscriptions_key) do |value|
    if value.nil?
      raise "Expected to find subscription data at redis key #{@config.subscriptions_key}"
    end
    yield MultiJson.decode(value)
  end
  deferred_get.errback do |message|
    Weeter.logger.error(message)
  end
end

#listen_for_filter_update(tweet_consumer) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/weeter/plugins/subscription/redis.rb', line 25

def listen_for_filter_update(tweet_consumer)
  pub_sub_redis.subscribe(@config.subscriptions_changed_channel)
  pub_sub_redis.on(:message) do |channel, message|
    Weeter.logger.info [:message, channel, message]
    Weeter.logger.info("Retrieving updated filters from redis")
    get_initial_filters do |filter_params|
      Weeter.logger.info("Triggering reconnect Twitter stream with new filters")
      tweet_consumer.reconnect(filter_params)
    end
  end
end