Sha256: c28dbaa4ae219198e599b32657f339ebb73cfd4070fa3d82d582bc61b08e932b

Contents?: true

Size: 941 Bytes

Versions: 3

Compression:

Stored size: 941 Bytes

Contents

module RolloutUi
  class Feature
    User = Struct.new(:id)

    attr_reader :name

    delegate :percentage_key, :group_key, :user_key, :to => :rollout

    def initialize(name)
      @wrapper = Wrapper.new
      @name = name
    end

    def percentage
      redis.get(percentage_key(name))
    end

    def groups
      redis.smembers(group_key(name))
    end

    def user_ids
      redis.smembers(user_key(name))
    end

    def percentage=(percentage)
      rollout.activate_percentage(name, percentage)
    end

    def groups=(groups)
      redis.del(group_key(name))
      groups.each { |group| rollout.activate_group(name, group) unless group.to_s.empty? }
    end

    def user_ids=(ids)
      redis.del(user_key(name))
      ids.each { |id| rollout.activate_user(name, User.new(id)) unless id.to_s.empty? }
    end

  private

    def redis
      @wrapper.redis
    end

    def rollout
      @wrapper.rollout
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
rollout_ui-0.2.0 lib/rollout_ui/feature.rb
bitlove-rollout_ui-0.1.0 lib/rollout_ui/feature.rb
rollout_ui-0.1.0 lib/rollout_ui/feature.rb