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, calibrating?, #calibrating?, #choose!, #choose_variant!, clear_winner!, #combined_experiments, combined_experiments, configure, #convert!, converted, declare_winner!, delete!, experiment_name, #initialize, participants, paused?, #paused?, #paused_at, persisted?, register!, reset!, run_callbacks, #run_callbacks, running?, #running?, save!, schedule!, #scheduled?, scheduled?, #start!, #started?, started?, #started_at, #stopped?, stopped?, #stopped_at, storage_key, target_sample_size_reached?, unconverted, variants, winner, #winner, winner?, #winner?, #winning_variant

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

.is_combined?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/trail_guide/combined_experiment.rb', line 13

def is_combined?
  true
end

.pause!Object



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

def pause!
  parent.pause!
end

.paused_atObject



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

def paused_at
  parent.paused_at
end

.resume!Object



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

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



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

def start!
  parent.start!
end

.started_atObject



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

def started_at
  parent.started_at
end

.stop!Object



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

def stop!
  parent.stop!
end

.stopped_atObject



46
47
48
# File 'lib/trail_guide/combined_experiment.rb', line 46

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



56
57
58
59
# File 'lib/trail_guide/combined_experiment.rb', line 56

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

#parentObject



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

def parent
  @parent ||= self.class.parent.new(participant.participant)
end