lib/pulse-meter-rails.rb in pulse-meter-rails-0.0.1 vs lib/pulse-meter-rails.rb in pulse-meter-rails-0.1.0

- old
+ new

@@ -26,13 +26,41 @@ extend ActiveSupport::Autoload autoload :Iterators end end - def self.redis=(redis) - PulseMeter.redis = redis - end + class << self + @@pid = nil + @@redis_config = {} - def self.redis - PulseMeter.redis + def redis=(redis) + PulseMeter.redis = redis + @@pid = Process.pid + @@redis_config = { + :host => redis.client.host, + :port => redis.client.port, + :db => redis.client.db + } + end + + def redis + reconnect if pid_changed + PulseMeter.redis + end + + def reconnect + PulseMeter.redis = Redis.new( + :host => @@redis_config[:host], + :port => @@redis_config[:port], + :db => @@redis_config[:db] + ) + end + + def maybe_reconnect + reconnect if pid_changed + end + + def pid_changed + @@pid && @@pid != Process.pid + end end end