module Gitlab::Experiment::Dsl
Public Class Methods
include_in(klass, with_helper: false)
click to toggle source
# 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
Public Instance Methods
experiment(name, variant_name = nil, **context, &block)
click to toggle source
# 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