Class: DynportTools::Features

Inherits:
Object
  • Object
show all
Defined in:
lib/dynport_tools/features.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.featuresObject

Returns the value of attribute features.



3
4
5
# File 'lib/dynport_tools/features.rb', line 3

def features
  @features
end

.redisObject

Returns the value of attribute redis.



3
4
5
# File 'lib/dynport_tools/features.rb', line 3

def redis
  @redis
end

Class Method Details

.add_user(feature, user) ⇒ Object



15
16
17
18
# File 'lib/dynport_tools/features.rb', line 15

def add_user(feature, user)
  raise "feature #{feature} not defined" if !(features || []).include?(feature)
  redis.sadd("features/#{feature}/users", user.id)
end

.feature(name) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/dynport_tools/features.rb', line 5

def feature(name)
  self.features ||= Array.new
  self.features << name
  self.class.send(:define_method, :"#{name}_enabled_for?") do |user, &block|
    enabled = !user.nil? && redis.sismember("features/#{name}/users", user.id.to_s)
    block.call if enabled && block
    enabled
  end
end

.remove_user(feature, user) ⇒ Object



20
21
22
# File 'lib/dynport_tools/features.rb', line 20

def remove_user(feature, user)
  redis.srem("features/#{feature}/users", user.id)
end