Module: Gitlab::Experiment::Dsl

Defined in:
lib/gitlab/experiment/dsl.rb

Instance Method Summary collapse

Instance Method Details

#experiment(name, variant_name = nil, **context, &block) ⇒ Object

Raises:

  • (ArgumentError)


6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/gitlab/experiment/dsl.rb', line 6

def experiment(name, variant_name = nil, **context, &block)
  raise ArgumentError, 'name is required' if name.nil?

  context[:request] ||= request if respond_to?(:request)

  base = Configuration.base_class.constantize
  klass = base.constantize(name) || base

  instance = klass.new(name, variant_name, **context, &block)
  return instance unless block

  instance.context.frozen? ? instance.run : instance.tap(&:run)
end