@@ -313,12 +313,18 @@ def get_variations_for_feature_list(project_config, feature_flags, user_context,
313313 decisions = [ ]
314314 feature_flags . each do |feature_flag |
315315 # check if the feature is being experiment on and whether the user is bucketed into the experiment
316- decision_result = get_variation_for_feature_experiment ( project_config , feature_flag , user_context , user_profile_tracker , decide_options )
317- # Only process rollout if no experiment decision was found and no error
318- if decision_result . decision . nil? && !decision_result . error
319- decision_result_rollout = get_variation_for_feature_rollout ( project_config , feature_flag , user_context ) unless decision_result . decision
320- decision_result . decision = decision_result_rollout . decision
321- decision_result . reasons . push ( *decision_result_rollout . reasons )
316+ holdouts = project_config . get_holdouts_for_flag ( feature_flag [ 'id' ] )
317+
318+ if holdouts && !holdouts . empty?
319+ decision_result = get_decision_for_flag ( feature_flag , user_context , project_config , decide_options , user_profile_tracker )
320+ else
321+ decision_result = get_variation_for_feature_experiment ( project_config , feature_flag , user_context , user_profile_tracker , decide_options )
322+ # Only process rollout if no experiment decision was found and no error
323+ if decision_result . decision . nil? && !decision_result . error
324+ decision_result_rollout = get_variation_for_feature_rollout ( project_config , feature_flag , user_context ) unless decision_result . decision
325+ decision_result . decision = decision_result_rollout . decision
326+ decision_result . reasons . push ( *decision_result_rollout . reasons )
327+ end
322328 end
323329 decisions << decision_result
324330 end
0 commit comments