Class: Growthbook::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/growthbook/context.rb

Overview

Context object passed into the GrowthBook constructor.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Context

Returns a new instance of Context.



56
57
58
59
60
61
62
63
64
65
66
67
68
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
104
105
106
107
108
109
# File 'lib/growthbook/context.rb', line 56

def initialize(options = {})
  @features = {}
  @attributes = {}
  @forced_variations = {}
  @forced_features = {}
  @attributes = {}
  @enabled = true
  @impressions = {}
  @sticky_bucket_assignment_docs = {}
  @saved_groups = {}

  features = {}
  attributes = {}

  options.transform_keys(&:to_sym).each do |key, value|
    case key
    when :enabled
      @enabled = value
    when :attributes
      attributes = value
    when :url
      @url = value
    when :decryption_key
      nil
    when :encrypted_features
      decrypted = decrypted_features_from_options(options)
      features = decrypted unless decrypted.nil?
    when :features
      features = value
    when :forced_variations, :forcedVariations
      self.forced_variations = value
    when :forced_features
      self.forced_features = value
    when :qa_mode, :qaMode
      @qa_mode = value
    when :listener
      @listener = value
    when :on_feature_usage
      @on_feature_usage = value
    when :sticky_bucket_service
      @sticky_bucket_service = value
    when :sticky_bucket_identifier_attributes
      @sticky_bucket_identifier_attributes = value
    when :saved_groups, :savedGroups
      @saved_groups = value || {}
    else
      warn("Unknown context option: #{key}")
    end
  end

  @using_derived_sticky_bucket_attributes = !@sticky_bucket_identifier_attributes
  self.attributes = attributes
  self.features = features
end

Instance Attribute Details

#attributesHash

Returns Map of user attributes that are used to assign variations.

Returns:

  • (Hash)

    Map of user attributes that are used to assign variations



24
25
26
# File 'lib/growthbook/context.rb', line 24

def attributes
  @attributes
end

#enabledtrue, false

Returns Switch to globally disable all experiments. Default true.

Returns:

  • (true, false)

    Switch to globally disable all experiments. Default true.



9
10
11
# File 'lib/growthbook/context.rb', line 9

def enabled
  @enabled
end

#featuresHash

Returns Feature definitions (usually pulled from an API or cache).

Returns:

  • (Hash)

    Feature definitions (usually pulled from an API or cache)



27
28
29
# File 'lib/growthbook/context.rb', line 27

def features
  @features
end

#forced_featuresHash[String, Any]

Returns Forced feature values.

Returns:

  • (Hash[String, Any])

    Forced feature values



36
37
38
# File 'lib/growthbook/context.rb', line 36

def forced_features
  @forced_features
end

#forced_variationsHash

Returns Force specific experiments to always assign a specific variation (used for QA).

Returns:

  • (Hash)

    Force specific experiments to always assign a specific variation (used for QA)



30
31
32
# File 'lib/growthbook/context.rb', line 30

def forced_variations
  @forced_variations
end

#impressionsHash[String, Growthbook::InlineExperimentResult] (readonly)

Returns Tracked impressions.

Returns:



33
34
35
# File 'lib/growthbook/context.rb', line 33

def impressions
  @impressions
end

#listenerGrowthbook::TrackingCallback

Returns An object that responds to on_experiment_viewed(GrowthBook::InlineExperiment, GrowthBook::InlineExperimentResult).

Returns:

  • (Growthbook::TrackingCallback)

    An object that responds to on_experiment_viewed(GrowthBook::InlineExperiment, GrowthBook::InlineExperimentResult)



18
19
20
# File 'lib/growthbook/context.rb', line 18

def listener
  @listener
end

#on_feature_usageGrowthbook::FeatureUsageCallback

Returns An object that responds to on_feature_usage(String, Growthbook::FeatureResult).

Returns:



21
22
23
# File 'lib/growthbook/context.rb', line 21

def on_feature_usage
  @on_feature_usage
end

#qa_modetrue, ...

Returns If true, random assignment is disabled and only explicitly forced variations are used.

Returns:

  • (true, false, nil)

    If true, random assignment is disabled and only explicitly forced variations are used.



15
16
17
# File 'lib/growthbook/context.rb', line 15

def qa_mode
  @qa_mode
end

#saved_groupsHash[String, Array] (readonly)

Returns Saved groups, used by the $inGroup/$notInGroup operators.

Returns:

  • (Hash[String, Array])

    Saved groups, used by the $inGroup/$notInGroup operators



39
40
41
# File 'lib/growthbook/context.rb', line 39

def saved_groups
  @saved_groups
end

#sticky_bucket_assignment_docsString (readonly)

Returns The attributes that are used to assign sticky buckets.

Returns:

  • (String)

    The attributes that are used to assign sticky buckets



48
49
50
# File 'lib/growthbook/context.rb', line 48

def sticky_bucket_assignment_docs
  @sticky_bucket_assignment_docs
end

#sticky_bucket_attributesHash[String, String] (readonly)

Returns The attributes that are used to assign sticky buckets.

Returns:

  • (Hash[String, String])

    The attributes that are used to assign sticky buckets



54
55
56
# File 'lib/growthbook/context.rb', line 54

def sticky_bucket_attributes
  @sticky_bucket_attributes
end

#sticky_bucket_identifier_attributesString (readonly)

Returns The attributes that identify users. If omitted, this will be inferred from the feature definitions.

Returns:

  • (String)

    The attributes that identify users. If omitted, this will be inferred from the feature definitions



45
46
47
# File 'lib/growthbook/context.rb', line 45

def sticky_bucket_identifier_attributes
  @sticky_bucket_identifier_attributes
end

#sticky_bucket_serviceGrowthbook::StickyBucketService (readonly)

Returns Sticky bucket service for sticky bucketing.

Returns:



42
43
44
# File 'lib/growthbook/context.rb', line 42

def sticky_bucket_service
  @sticky_bucket_service
end

#urlString

Returns The URL of the current page.

Returns:

  • (String)

    The URL of the current page



12
13
14
# File 'lib/growthbook/context.rb', line 12

def url
  @url
end

#using_derived_sticky_bucket_attributesBoolean (readonly)

Returns If true, the context is using derived sticky bucket attributes.

Returns:

  • (Boolean)

    If true, the context is using derived sticky bucket attributes



51
52
53
# File 'lib/growthbook/context.rb', line 51

def using_derived_sticky_bucket_attributes
  @using_derived_sticky_bucket_attributes
end

Instance Method Details

#eval_feature(key) ⇒ Object



140
141
142
# File 'lib/growthbook/context.rb', line 140

def eval_feature(key)
  _eval_feature(key, Set.new)
end

#feature_value(key, fallback = nil) ⇒ Object



156
157
158
159
# File 'lib/growthbook/context.rb', line 156

def feature_value(key, fallback = nil)
  value = eval_feature(key).value
  value.nil? ? fallback : value
end

#off?(key) ⇒ Boolean

Returns:

  • (Boolean)


152
153
154
# File 'lib/growthbook/context.rb', line 152

def off?(key)
  eval_feature(key).off
end

#on?(key) ⇒ Boolean

Returns:

  • (Boolean)


148
149
150
# File 'lib/growthbook/context.rb', line 148

def on?(key)
  eval_feature(key).on
end

#run(exp) ⇒ Object



144
145
146
# File 'lib/growthbook/context.rb', line 144

def run(exp)
  _run(exp)
end