Class: Hackle::Experiment

Inherits:
Object
  • Object
show all
Defined in:
lib/hackle/internal/model/experiment.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id:, key:, name:, type:, identifier_type:, status:, version:, execution_version:, variations:, user_overrides:, segment_overrides:, target_audiences:, target_rules:, default_rule:, container_id:, winner_variation_id:) ⇒ Experiment

Returns a new instance of Experiment.

Parameters:

  • id (Integer)
  • key (Integer)
  • name (String, nil)
  • type (ExperimentType)
  • identifier_type (String)
  • status (ExperimentStatus)
  • version (Integer)
  • execution_version (Integer)
  • variations (Array<Variation>)
  • user_overrides (Hash{String => Integer})
  • segment_overrides (Array<TargetRule>)
  • target_audiences (Array<Target>)
  • target_rules (Array<TargetRule>)
  • default_rule (Action)
  • container_id (Integer, nil)
  • winner_variation_id (Integer, nil)


69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/hackle/internal/model/experiment.rb', line 69

def initialize(
  id:,
  key:,
  name:,
  type:,
  identifier_type:,
  status:,
  version:,
  execution_version:,
  variations:,
  user_overrides:,
  segment_overrides:,
  target_audiences:,
  target_rules:,
  default_rule:,
  container_id:,
  winner_variation_id:
)
  @id = id
  @key = key
  @name = name
  @type = type
  @identifier_type = identifier_type
  @status = status
  @version = version
  @execution_version = execution_version
  @variations = variations
  @user_overrides = user_overrides
  @segment_overrides = segment_overrides
  @target_audiences = target_audiences
  @target_rules = target_rules
  @default_rule = default_rule
  @container_id = container_id
  @winner_variation_id = winner_variation_id
end

Instance Attribute Details

#container_idInteger? (readonly)

Returns:

  • (Integer, nil)


48
49
50
# File 'lib/hackle/internal/model/experiment.rb', line 48

def container_id
  @container_id
end

#default_ruleAction (readonly)

Returns:



45
46
47
# File 'lib/hackle/internal/model/experiment.rb', line 45

def default_rule
  @default_rule
end

#execution_versionInteger (readonly)

Returns:

  • (Integer)


27
28
29
# File 'lib/hackle/internal/model/experiment.rb', line 27

def execution_version
  @execution_version
end

#idInteger (readonly)

Returns:

  • (Integer)


6
7
8
# File 'lib/hackle/internal/model/experiment.rb', line 6

def id
  @id
end

#identifier_typeString (readonly)

Returns:

  • (String)


18
19
20
# File 'lib/hackle/internal/model/experiment.rb', line 18

def identifier_type
  @identifier_type
end

#keyInteger (readonly)

Returns:

  • (Integer)


9
10
11
# File 'lib/hackle/internal/model/experiment.rb', line 9

def key
  @key
end

#nameString? (readonly)

Returns:

  • (String, nil)


12
13
14
# File 'lib/hackle/internal/model/experiment.rb', line 12

def name
  @name
end

#segment_overridesArray<TargetRule> (readonly)

Returns:



36
37
38
# File 'lib/hackle/internal/model/experiment.rb', line 36

def segment_overrides
  @segment_overrides
end

#statusExperimentStatus (readonly)

Returns:



21
22
23
# File 'lib/hackle/internal/model/experiment.rb', line 21

def status
  @status
end

#target_audiencesArray<Target> (readonly)

Returns:



39
40
41
# File 'lib/hackle/internal/model/experiment.rb', line 39

def target_audiences
  @target_audiences
end

#target_rulesArray<TargetRule> (readonly)

Returns:



42
43
44
# File 'lib/hackle/internal/model/experiment.rb', line 42

def target_rules
  @target_rules
end

#typeExperimentType (readonly)

Returns:



15
16
17
# File 'lib/hackle/internal/model/experiment.rb', line 15

def type
  @type
end

#user_overridesHash{String => Integer} (readonly)

Returns:

  • (Hash{String => Integer})


33
34
35
# File 'lib/hackle/internal/model/experiment.rb', line 33

def user_overrides
  @user_overrides
end

#variationsArray<Variation> (readonly)

Returns:



30
31
32
# File 'lib/hackle/internal/model/experiment.rb', line 30

def variations
  @variations
end

#versionInteger (readonly)

Returns:

  • (Integer)


24
25
26
# File 'lib/hackle/internal/model/experiment.rb', line 24

def version
  @version
end

#winner_variation_idInteger? (readonly)

Returns:

  • (Integer, nil)


51
52
53
# File 'lib/hackle/internal/model/experiment.rb', line 51

def winner_variation_id
  @winner_variation_id
end

Instance Method Details

#get_variation_or_nil_by_id(id) ⇒ Hackle::Variation?

Parameters:

  • id (Integer)

Returns:



107
108
109
# File 'lib/hackle/internal/model/experiment.rb', line 107

def get_variation_or_nil_by_id(id)
  variations.find { |v| v.id == id }
end

#get_variation_or_nil_by_key(key) ⇒ Hackle::Variation?

Parameters:

  • key (String)

Returns:



113
114
115
# File 'lib/hackle/internal/model/experiment.rb', line 113

def get_variation_or_nil_by_key(key)
  variations.find { |v| v.key == key }
end

#winner_variation_or_nilHackle::Variation?

Returns:



118
119
120
# File 'lib/hackle/internal/model/experiment.rb', line 118

def winner_variation_or_nil
  get_variation_or_nil_by_id(winner_variation_id) unless winner_variation_id.nil?
end