Sha256: 749058c8161b983b356c396ebdcf8d6e8e69ddb8e9a3285393b427d2e356be69
Contents?: true
Size: 708 Bytes
Versions: 3
Compression:
Stored size: 708 Bytes
Contents
class DynportTools::Features class << self attr_accessor :features, :redis 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 def add_user(feature, user) raise "feature #{feature} not defined" if !(features || []).include?(feature) redis.sadd("features/#{feature}/users", user.id) end def remove_user(feature, user) redis.srem("features/#{feature}/users", user.id) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dynport_tools-0.2.22 | lib/dynport_tools/features.rb |
dynport_tools-0.2.21 | lib/dynport_tools/features.rb |
dynport_tools-0.2.20 | lib/dynport_tools/features.rb |