Module: Gitlab::Experiment::Dsl

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.include_in(klass, with_helper: false) ⇒ Object



6
7
8
# File 'lib/gitlab/experiment/dsl.rb', line 6

def self.include_in(klass, with_helper: false)
  klass.include(self).tap { |base| base.helper_method(:experiment) if with_helper }
end

Instance Method Details

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

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/gitlab/experiment/dsl.rb', line 10

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