class Unleash::Strategy::FlexibleRollout
Public Instance Methods
is_enabled?(params = {}, context = nil)
click to toggle source
need: params
# File lib/unleash/strategy/flexible_rollout.rb, line 11 def is_enabled?(params = {}, context = nil) return false unless params.is_a?(Hash) return false unless context.class.name == 'Unleash::Context' stickiness = params.fetch('stickiness', 'default') stickiness_id = resolve_stickiness(stickiness, context) begin percentage = Integer(params.fetch('rollout', 0)) percentage = 0 if percentage > 100 || percentage.negative? rescue ArgumentError return false end group_id = params.fetch('groupId', '') normalized_number = Util.get_normalized_number(stickiness_id, group_id) return false if stickiness_id.nil? (percentage.positive? && normalized_number <= percentage) end
name()
click to toggle source
# File lib/unleash/strategy/flexible_rollout.rb, line 6 def name 'flexibleRollout' end
Private Instance Methods
random()
click to toggle source
# File lib/unleash/strategy/flexible_rollout.rb, line 35 def random Random.rand(0..100) end
resolve_stickiness(stickiness, context)
click to toggle source
# File lib/unleash/strategy/flexible_rollout.rb, line 39 def resolve_stickiness(stickiness, context) case stickiness when 'userId' context.user_id when 'sessionId' context.session_id when 'random' random when 'default' context.user_id || context.session_id || random else nil end end