lib/rollout.rb in rollout-1.0.0 vs lib/rollout.rb in rollout-1.1.0

- old
+ new

@@ -42,10 +42,18 @@ def deactivate_percentage(feature) @redis.del(percentage_key(feature)) end + def info(feature) + { + :percentage => (active_percentage(feature) || 0).to_i, + :groups => active_groups(feature).map { |g| g.to_sym }, + :users => active_user_ids(feature) + } + end + private def key(name) "feature:#{name}" end @@ -59,19 +67,33 @@ def percentage_key(name) "#{key(name)}:percentage" end + def active_groups(feature) + @redis.smembers(group_key(feature)) || [] + end + + def active_user_ids(feature) + @redis.smembers(user_key(feature)).map { |id| id.to_i } + end + + def active_percentage(feature) + @redis.get(percentage_key(feature)) + end + def user_in_active_group?(feature, user) - (@redis.smembers(group_key(feature)) || []).any? { |group| @groups.key?(group) && @groups[group].call(user) } + active_groups(feature).any? do |group| + @groups.key?(group) && @groups[group].call(user) + end end def user_active?(feature, user) @redis.sismember(user_key(feature), user.id) end def user_within_active_percentage?(feature, user) - percentage = @redis.get(percentage_key(feature)) + percentage = active_percentage(feature) return false if percentage.nil? user.id % 100 < percentage.to_i end end