diff options
Diffstat (limited to 'lib/gitlab/experimentation/experiment.rb')
-rw-r--r-- | lib/gitlab/experimentation/experiment.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/gitlab/experimentation/experiment.rb b/lib/gitlab/experimentation/experiment.rb new file mode 100644 index 00000000000..e594c3bedeb --- /dev/null +++ b/lib/gitlab/experimentation/experiment.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +module Gitlab + module Experimentation + class Experiment + attr_reader :key, :tracking_category, :use_backwards_compatible_subject_index + + def initialize(key, **params) + @key = key + @tracking_category = params[:tracking_category] + @use_backwards_compatible_subject_index = params[:use_backwards_compatible_subject_index] + + @experiment_percentage = Feature.get(:"#{key}_experiment_percentage").percentage_of_time_value # rubocop:disable Gitlab/AvoidFeatureGet + end + + def active? + ::Gitlab.dev_env_or_com? && experiment_percentage > 0 + end + + def enabled_for_index?(index) + return false if index.blank? + + index <= experiment_percentage + end + + private + + attr_reader :experiment_percentage + end + end +end |