Sha256: b8afed065c56293b1bb46aed9233bfc898704276723e939d5d869772a89b77e8

Contents?: true

Size: 1.09 KB

Versions: 38

Compression:

Stored size: 1.09 KB

Contents

# This example shows how to setup a group that enables a feature for a
# percentage of actors. It could be combined with other logic to enable a
# feature for actors in a particular location or on a particular plan, but only
# for a percentage of them. The percentage is a constant, but could easily be
# plucked from memcached, redis, mysql or whatever.
require 'bundler/setup'
require 'flipper'

# Some class that represents what will be trying to do something
class User < Struct.new(:id)
  include Flipper::Identifier
end

PERCENTAGE = 50
Flipper.register(:experimental) do |actor|
  if actor.respond_to?(:flipper_id)
    Zlib.crc32(actor.flipper_id.to_s) % 100 < PERCENTAGE
  else
    false
  end
end

# enable the experimental group
Flipper.enable_group :stats, :experimental

# create a bunch of fake users and see how many are enabled
total = 10_000
users = (1..total).map { |n| User.new(n) }
enabled = users.map { |user|
  Flipper.enabled?(:stats, user) ? true : nil
}.compact

# show the results
actual = (enabled.size / total.to_f * 100).round
puts "percentage: #{actual} vs hoped for: #{PERCENTAGE}"

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
flipper-1.3.2 examples/percentage_of_actors_group.rb
flipper-1.3.1 examples/percentage_of_actors_group.rb
flipper-1.3.0 examples/percentage_of_actors_group.rb
flipper-1.3.0.pre examples/percentage_of_actors_group.rb
flipper-1.2.2 examples/percentage_of_actors_group.rb
flipper-1.2.1 examples/percentage_of_actors_group.rb
flipper-1.2.0 examples/percentage_of_actors_group.rb
flipper-1.1.2 examples/percentage_of_actors_group.rb
flipper-1.1.1 examples/percentage_of_actors_group.rb
flipper-1.1.0 examples/percentage_of_actors_group.rb
flipper-1.0.0 examples/percentage_of_actors_group.rb
flipper-1.0.0.pre examples/percentage_of_actors_group.rb
flipper-0.28.3 examples/percentage_of_actors_group.rb
flipper-0.28.2 examples/percentage_of_actors_group.rb
flipper-0.28.1 examples/percentage_of_actors_group.rb
flipper-0.28.0 examples/percentage_of_actors_group.rb
flipper-0.27.1 examples/percentage_of_actors_group.rb
flipper-0.27.0 examples/percentage_of_actors_group.rb
flipper-0.26.2 examples/percentage_of_actors_group.rb
flipper-0.26.1 examples/percentage_of_actors_group.rb