diff options
Diffstat (limited to 'lib/gitlab/experimentation/controller_concern.rb')
-rw-r--r-- | lib/gitlab/experimentation/controller_concern.rb | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/gitlab/experimentation/controller_concern.rb b/lib/gitlab/experimentation/controller_concern.rb index 2b38b12c914..248abfeada5 100644 --- a/lib/gitlab/experimentation/controller_concern.rb +++ b/lib/gitlab/experimentation/controller_concern.rb @@ -15,7 +15,7 @@ module Gitlab included do before_action :set_experimentation_subject_id_cookie, unless: :dnt_enabled? - helper_method :experiment_enabled?, :experiment_tracking_category_and_group, :tracking_label + helper_method :experiment_enabled?, :experiment_tracking_category_and_group, :record_experiment_group, :tracking_label end def set_experimentation_subject_id_cookie @@ -72,12 +72,22 @@ module Gitlab ::Experiment.add_user(experiment_key, tracking_group(experiment_key, nil, subject: subject), current_user, context) end - def record_experiment_conversion_event(experiment_key) + def record_experiment_group(experiment_key, group) + return if dnt_enabled? + return unless Experimentation.active?(experiment_key) && group + + variant_subject = Experimentation.rollout_strategy(experiment_key) == :cookie ? nil : group + variant = tracking_group(experiment_key, nil, subject: variant_subject) + + ::Experiment.add_group(experiment_key, group: group, variant: variant) + end + + def record_experiment_conversion_event(experiment_key, context = {}) return if dnt_enabled? return unless current_user return unless Experimentation.active?(experiment_key) - ::Experiment.record_conversion_event(experiment_key, current_user) + ::Experiment.record_conversion_event(experiment_key, current_user, context) end def experiment_tracking_category_and_group(experiment_key, subject: nil) |