Class: Growthbook::Context
- Inherits:
-
Object
- Object
- Growthbook::Context
- Defined in:
- lib/growthbook/context.rb
Overview
Context object passed into the GrowthBook constructor.
Instance Attribute Summary collapse
-
#attributes ⇒ Hash
Map of user attributes that are used to assign variations.
-
#enabled ⇒ true, false
Switch to globally disable all experiments.
-
#features ⇒ Hash
Feature definitions (usually pulled from an API or cache).
-
#forced_features ⇒ Hash[String, Any]
Forced feature values.
-
#forced_variations ⇒ Hash
Force specific experiments to always assign a specific variation (used for QA).
-
#impressions ⇒ Hash[String, Growthbook::InlineExperimentResult]
readonly
Tracked impressions.
-
#listener ⇒ Growthbook::TrackingCallback
An object that responds to
on_experiment_viewed(GrowthBook::InlineExperiment, GrowthBook::InlineExperimentResult). -
#on_feature_usage ⇒ Growthbook::FeatureUsageCallback
An object that responds to
on_feature_usage(String, Growthbook::FeatureResult). -
#qa_mode ⇒ true, ...
If true, random assignment is disabled and only explicitly forced variations are used.
-
#saved_groups ⇒ Hash[String, Array]
readonly
Saved groups, used by the $inGroup/$notInGroup operators.
-
#sticky_bucket_assignment_docs ⇒ String
readonly
The attributes that are used to assign sticky buckets.
-
#sticky_bucket_attributes ⇒ Hash[String, String]
readonly
The attributes that are used to assign sticky buckets.
-
#sticky_bucket_identifier_attributes ⇒ String
readonly
The attributes that identify users.
-
#sticky_bucket_service ⇒ Growthbook::StickyBucketService
readonly
Sticky bucket service for sticky bucketing.
-
#url ⇒ String
The URL of the current page.
-
#using_derived_sticky_bucket_attributes ⇒ Boolean
readonly
If true, the context is using derived sticky bucket attributes.
Instance Method Summary collapse
- #eval_feature(key) ⇒ Object
- #feature_value(key, fallback = nil) ⇒ Object
-
#initialize(options = {}) ⇒ Context
constructor
A new instance of Context.
- #off?(key) ⇒ Boolean
- #on?(key) ⇒ Boolean
- #run(exp) ⇒ Object
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( = {}) @features = {} @attributes = {} @forced_variations = {} @forced_features = {} @attributes = {} @enabled = true @impressions = {} @sticky_bucket_assignment_docs = {} @saved_groups = {} features = {} attributes = {} .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 = () 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
#attributes ⇒ Hash
Returns Map of user attributes that are used to assign variations.
24 25 26 |
# File 'lib/growthbook/context.rb', line 24 def attributes @attributes end |
#enabled ⇒ true, false
Returns Switch to globally disable all experiments. Default true.
9 10 11 |
# File 'lib/growthbook/context.rb', line 9 def enabled @enabled end |
#features ⇒ Hash
Returns Feature definitions (usually pulled from an API or cache).
27 28 29 |
# File 'lib/growthbook/context.rb', line 27 def features @features end |
#forced_features ⇒ Hash[String, Any]
Returns Forced feature values.
36 37 38 |
# File 'lib/growthbook/context.rb', line 36 def forced_features @forced_features end |
#forced_variations ⇒ Hash
Returns 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 |
#impressions ⇒ Hash[String, Growthbook::InlineExperimentResult] (readonly)
Returns Tracked impressions.
33 34 35 |
# File 'lib/growthbook/context.rb', line 33 def impressions @impressions end |
#listener ⇒ Growthbook::TrackingCallback
Returns 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_usage ⇒ Growthbook::FeatureUsageCallback
Returns An object that responds to on_feature_usage(String, Growthbook::FeatureResult).
21 22 23 |
# File 'lib/growthbook/context.rb', line 21 def on_feature_usage @on_feature_usage end |
#qa_mode ⇒ true, ...
Returns 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_groups ⇒ Hash[String, Array] (readonly)
Returns 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_docs ⇒ String (readonly)
Returns 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_attributes ⇒ Hash[String, String] (readonly)
Returns 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_attributes ⇒ String (readonly)
Returns 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_service ⇒ Growthbook::StickyBucketService (readonly)
Returns Sticky bucket service for sticky bucketing.
42 43 44 |
# File 'lib/growthbook/context.rb', line 42 def sticky_bucket_service @sticky_bucket_service end |
#url ⇒ String
Returns The URL of the current page.
12 13 14 |
# File 'lib/growthbook/context.rb', line 12 def url @url end |
#using_derived_sticky_bucket_attributes ⇒ Boolean (readonly)
Returns 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
152 153 154 |
# File 'lib/growthbook/context.rb', line 152 def off?(key) eval_feature(key).off end |
#on?(key) ⇒ 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 |