Class: TrailGuide::CombinedExperiment

Inherits:
Experiments::Base show all
Defined in:
lib/trail_guide/combined_experiment.rb

Instance Attribute Summary

Attributes inherited from Experiments::Base

#participant

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Experiments::Base

#algorithm, #allow_conversion?, #allow_participation?, as_json, #choose!, #choose_variant!, clear_winner!, configure, #convert!, converted, declare_winner!, delete!, experiment_name, #initialize, participants, paused?, persisted?, reset!, run_callbacks, #run_callbacks, running?, save!, started?, stopped?, storage_key, target_sample_size_reached?, unconverted, #variant_chosen!, variants, winner, #winner, winner?

Constructor Details

This class inherits a constructor from TrailGuide::Experiments::Base

Class Method Details

.configurationObject



9
10
11
# File 'lib/trail_guide/combined_experiment.rb', line 9

def configuration
  @configuration ||= Experiments::CombinedConfig.new(self)
end

.pause!Object



22
23
24
# File 'lib/trail_guide/combined_experiment.rb', line 22

def pause!
  parent.pause!
end

.paused_atObject



38
39
40
# File 'lib/trail_guide/combined_experiment.rb', line 38

def paused_at
  parent.paused_at
end

.resume!Object



30
31
32
# File 'lib/trail_guide/combined_experiment.rb', line 30

def resume!
  parent.resume!
end

.start!Object

TODO if just I delegate on this inheriting class, will that override the defined methods on the base class? and will they interplay nicely? like with ‘started?` calling `started_at`, etc.?

really wishing i’d written some specs right about now :-P



18
19
20
# File 'lib/trail_guide/combined_experiment.rb', line 18

def start!
  parent.start!
end

.started_atObject



34
35
36
# File 'lib/trail_guide/combined_experiment.rb', line 34

def started_at
  parent.started_at
end

.stop!Object



26
27
28
# File 'lib/trail_guide/combined_experiment.rb', line 26

def stop!
  parent.stop!
end

.stopped_atObject



42
43
44
# File 'lib/trail_guide/combined_experiment.rb', line 42

def stopped_at
  parent.stopped_at
end

Instance Method Details

#algorithm_choose!(metadata: nil) ⇒ Object

use the parent experiment as the algorithm and map to the matching variant



51
52
53
54
# File 'lib/trail_guide/combined_experiment.rb', line 51

def algorithm_choose!(metadata: nil)
  variant = parent.new(participant.participant).choose!(metadata: )
  variants.find { |var| var == variant.name }
end