Class: Aclatraz::Store::Redis

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/aclatraz/store/redis.rb

Constant Summary collapse

ROLES_KEY =
"aclatraz.roles"
MEMBER_ROLES_KEY =
"member.%s.roles"

Instance Method Summary collapse

Methods included from Helpers

#camelize, #pack

Constructor Details

#initialize(*args) ⇒ Redis

:nodoc:



15
16
17
# File 'lib/aclatraz/store/redis.rb', line 15

def initialize(*args) # :nodoc:
  @backend = ::Redis.new(*args)
end

Instance Method Details

#check(role, owner, object = nil) ⇒ Object



37
38
39
40
41
# File 'lib/aclatraz/store/redis.rb', line 37

def check(role, owner, object=nil)
  @backend.sismember(role.to_s, pack(owner.id, object)) or begin
    object && !object.is_a?(Class) ? check(role, owner, object.class) : false
  end
end

#clearObject



47
48
49
# File 'lib/aclatraz/store/redis.rb', line 47

def clear
  @backend.flushdb
end

#delete(role, owner, object = nil) ⇒ Object



43
44
45
# File 'lib/aclatraz/store/redis.rb', line 43

def delete(role, owner, object=nil)
  @backend.srem(role.to_s, pack(owner.id, object))
end

#roles(member = nil) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/aclatraz/store/redis.rb', line 29

def roles(member=nil)
  if member
    @backend.hkeys(MEMBER_ROLES_KEY % member.id.to_s)
  else
    @backend.hkeys(ROLES_KEY)
  end
end

#set(role, owner, object = nil) ⇒ Object



19
20
21
22
23
24
25
26
27
# File 'lib/aclatraz/store/redis.rb', line 19

def set(role, owner, object=nil)
  @backend.multi do
    unless object
      @backend.hset(ROLES_KEY, role, 1)
      @backend.hset(MEMBER_ROLES_KEY % owner.id.to_s, role, 1)
    end
    @backend.sadd(role.to_s, pack(owner.id, object))
  end
end