Class: Aclatraz::Store::Redis
- Inherits:
-
Object
- Object
- Aclatraz::Store::Redis
- Includes:
- Helpers
- Defined in:
- lib/aclatraz/store/redis.rb
Overview
List of global roles are stored in ROLES set. Each member has its own key, which contains list of assigned roles. Roles are stored in following format:
member.{:member_id}.roles:
"role_name"
"role_name/ClassName"
"role_name/ObjectClass/object_id"
Constant Summary collapse
- ROLES =
"roles"
- MEMBER_ROLES =
"member.%s.roles"
Instance Method Summary collapse
- #check(role, member, object = nil) ⇒ Object
- #clear ⇒ Object
- #delete(role, member, object = nil) ⇒ Object
-
#initialize(*args) ⇒ Redis
constructor
:nodoc:.
- #roles(member = nil) ⇒ Object
- #set(role, member, object = nil) ⇒ Object
Methods included from Helpers
Constructor Details
#initialize(*args) ⇒ Redis
:nodoc:
23 24 25 |
# File 'lib/aclatraz/store/redis.rb', line 23 def initialize(*args) # :nodoc: @backend = ::Redis.new(*args) end |
Instance Method Details
#check(role, member, object = nil) ⇒ Object
45 46 47 48 49 |
# File 'lib/aclatraz/store/redis.rb', line 45 def check(role, member, object=nil) @backend.sismember(MEMBER_ROLES % member_id(member), pack(role.to_s, object)) or begin object && !object.is_a?(Class) ? check(role, member, object.class) : false end end |
#clear ⇒ Object
55 56 57 |
# File 'lib/aclatraz/store/redis.rb', line 55 def clear @backend.flushdb end |
#delete(role, member, object = nil) ⇒ Object
51 52 53 |
# File 'lib/aclatraz/store/redis.rb', line 51 def delete(role, member, object=nil) @backend.srem(MEMBER_ROLES % member_id(member), pack(role.to_s, object)) end |
#roles(member = nil) ⇒ Object
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/aclatraz/store/redis.rb', line 34 def roles(member=nil) if member @backend.smembers(MEMBER_ROLES % member_id(member)).map {|role| role = unpack(role) role[0] if role.size == 1 }.compact.uniq else @backend.smembers(ROLES) end end |
#set(role, member, object = nil) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/aclatraz/store/redis.rb', line 27 def set(role, member, object=nil) @backend.multi do @backend.sadd(ROLES, role.to_s) unless object @backend.sadd(MEMBER_ROLES % member_id(member), pack(role.to_s, object)) end end |