Sha256: 57d84e05fc73f565ad1766f8f3853c4f466cf7d84aa91eb442ea659746caade7
Contents?: true
Size: 1.59 KB
Versions: 2
Compression:
Stored size: 1.59 KB
Contents
require 'redis' require 'uri' module OptOut module Adapters # Adapter that persists data in a Redis set. # # Options # :redis - redis connection object OR # :url - redis connection url OR # :host # :port # :password # :key_format - format string for redis key. list_id is interpolated into this option. # Default is "opt_out:%s" class RedisAdapter < AbstractAdapter def subscribe(list_id, user_id) redis.srem(key(list_id), user_id) and return end def unsubscribe(list_id, user_id) redis.sadd(key(list_id), user_id) and return end def unsubscribed?(list_id, user_id) redis.sismember(key(list_id), user_id) end def unsubscribers(list_id) redis.smembers(key(list_id)) end def reset redis.flushdb end def key_format @key_format || @options[:key_format] || "opt_out:%s" end attr_writer :key_format # Private: returns redis client for this adapter def redis return @redis if @redis @redis = if @options[:redis] @options[:redis] elsif @options[:url] uri = URI.parse(@options[:url]) Redis.new(:host => uri.host, :port => uri.port, :password => uri.password) else Redis.new(:host => @options[:host], :port => @options[:port], :password => @options[:password]) end end private # Returns key to use for redis set add from `:key_format` option def key(list_id) key_format % list_id end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
opt_out-1.1.0 | lib/opt_out/adapters/redis_adapter.rb |
opt_out-1.0.0 | lib/opt_out/adapters/redis_adapter.rb |