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