File: force_assignment.rb

package info (click to toggle)
ruby-gitlab-experiment 1.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 288 kB
  • sloc: ruby: 1,250; makefile: 7
file content (28 lines) | stat: -rw-r--r-- 667 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# frozen_string_literal: true

module Gitlab
  class Experiment
    module ForceAssignment
      PARAM_NAME = 'glex_force'

      private

      def forced_variant_name
        return unless Configuration.allow_forced_assignment
        return unless enabled?

        param = context&.request&.params.try(:[], PARAM_NAME)
        return if param.blank?

        experiment_name, variant_name = param.split(':', 2)
        return if experiment_name.blank? || variant_name.blank?
        return unless experiment_name == name

        variant_sym = variant_name.to_sym
        return unless behaviors.key?(variant_sym)

        variant_sym
      end
    end
  end
end