class DynportTools::Features

Attributes

features[RW]
redis[RW]

Public Class Methods

add_user(feature, user) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# File lib/dynport_tools/features.rb, line 20
def remove_user(feature, user)
  redis.srem("features/#{feature}/users", user.id)
end