Slide 64
Slide 64 text
class ABExperimentBuilder < Module
def initialize(name:, control:, test:)
attr_reader :api, :client
const_set(:NAME, name)
const_set(:CONTROL_CELL, control)
const_set(:TEST_CELL, test)
define_method(:initialize) do |client|
@client = client
@api = Experiments::API.new(
self.class.const_get(:NAME),
client
)
end
end
module ClassMethods
def define!
klass = self
Experiments::API.define_experiment do
name klass.const_get(:NAME)
cell klass.const_get(:CONTROL_CELL), control: true
cell klass.const_get(:TEST_CELL)
end
end
end
def included(base); base.extend(ClassMethods) end
end