class Seven::RedisStore

Public Class Methods

new(redis_opts) click to toggle source
# File lib/seven/redis_store.rb, line 2
def initialize(redis_opts)
  opts = redis_opts.symbolize_keys
  @redis = opts[:redis]
end

Public Instance Methods

clear(user) click to toggle source
# File lib/seven/redis_store.rb, line 21
def clear(user)
  @redis.del(get_user_key(user.id))
end
clear_all!() click to toggle source
# File lib/seven/redis_store.rb, line 25
def clear_all!
  @redis.eval(
    "local keys = redis.call('keys', 'seven_abilities/*')\n" +
    "for i = 1, #keys,5000 do\n" +
    "  redis.call('del', unpack(keys, i, math.min(i+4999, #keys)))\n" +
    "end\n" +
    "return #keys"
  )
end
del(user, ability) click to toggle source
# File lib/seven/redis_store.rb, line 11
def del(user, ability)
  @redis.hdel(get_user_key(user.id), ability)
end
list(user) click to toggle source
# File lib/seven/redis_store.rb, line 15
def list(user)
  @redis.hgetall(get_user_key(user.id)).symbolize_keys.tap do |abilities|
    abilities.each { |k, v| abilities[k] = v == '1' ? true : false }
  end
end
set(user, ability, allowed) click to toggle source
# File lib/seven/redis_store.rb, line 7
def set(user, ability, allowed)
  @redis.hset(get_user_key(user.id), ability, allowed ? '1' : '0')
end

Private Instance Methods

get_user_key(user_id) click to toggle source
# File lib/seven/redis_store.rb, line 37
def get_user_key(user_id)
  "seven_abilities/#{user_id}"
end