statsig 2.2.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/config_result.rb +4 -1
- data/lib/evaluator.rb +6 -2
- data/lib/statsig.rb +1 -1
- data/lib/statsig_driver.rb +4 -6
- data/lib/statsig_logger.rb +21 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b9e465d382f7e7e2a4640eaf549bc3e882b0aac3c2333c9874fc6855a6af1cc
|
4
|
+
data.tar.gz: 844845547c6b1914908e38438dc932486e3ea5740ef32c3b59eb1cc67a4274ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a61ad75521667fd2dc1d1a2df7f653e770b0ce111b66302c16302d4b59394719ac2f3617968adb4dce303bbd3791ecd7aa3da7698ad9cf448dc522bc3564ac00
|
7
|
+
data.tar.gz: 79a119ba9af5c7c2da630ce9501596dc0e230adeff7e8c022b5904e7c2e5e5475efc3a1ee968d23be105940e4ab60e3da1154d3ce1ec8e9dd8ef2547f9be1a84
|
data/lib/config_result.rb
CHANGED
@@ -16,6 +16,7 @@ module Statsig
|
|
16
16
|
attr_accessor :target_app_ids
|
17
17
|
attr_accessor :disable_evaluation_details
|
18
18
|
attr_accessor :disable_exposures
|
19
|
+
attr_accessor :config_version
|
19
20
|
|
20
21
|
def initialize(
|
21
22
|
name:,
|
@@ -31,7 +32,8 @@ module Statsig
|
|
31
32
|
id_type: nil,
|
32
33
|
target_app_ids: nil,
|
33
34
|
disable_evaluation_details: false,
|
34
|
-
disable_exposures: false
|
35
|
+
disable_exposures: false,
|
36
|
+
config_version: nil
|
35
37
|
)
|
36
38
|
@name = name
|
37
39
|
@gate_value = gate_value
|
@@ -48,6 +50,7 @@ module Statsig
|
|
48
50
|
@target_app_ids = target_app_ids
|
49
51
|
@disable_evaluation_details = disable_evaluation_details
|
50
52
|
@disable_exposures = disable_exposures
|
53
|
+
@config_version = config_version
|
51
54
|
end
|
52
55
|
|
53
56
|
def self.from_user_persisted_values(config_name, user_persisted_values)
|
data/lib/evaluator.rb
CHANGED
@@ -324,7 +324,11 @@ module Statsig
|
|
324
324
|
def finalize_eval_result(config, end_result, did_pass:, rule:, is_nested: false)
|
325
325
|
end_result.id_type = config[:idType]
|
326
326
|
end_result.target_app_ids = config[:targetAppIDs]
|
327
|
-
end_result.gate_value = did_pass
|
327
|
+
end_result.gate_value = did_pass
|
328
|
+
if config[:entity] == Const::TYPE_FEATURE_GATE
|
329
|
+
end_result.gate_value = did_pass ? rule[:returnValue] == true : config[:defaultValue] == true
|
330
|
+
end
|
331
|
+
end_result.config_version = config[:version]
|
328
332
|
|
329
333
|
if rule.nil?
|
330
334
|
end_result.json_value = config[:defaultValue]
|
@@ -691,7 +695,7 @@ module Statsig
|
|
691
695
|
pass_percentage = rule[:passPercentage]
|
692
696
|
return true if pass_percentage == 100.0
|
693
697
|
return false if pass_percentage == 0.0
|
694
|
-
|
698
|
+
|
695
699
|
unit_id = user.get_unit_id(rule[:idType]) || Const::EMPTY_STR
|
696
700
|
rule_salt = rule[:salt] || rule[:id] || Const::EMPTY_STR
|
697
701
|
hash = compute_user_hash("#{config_salt}.#{rule_salt}.#{unit_id}")
|
data/lib/statsig.rb
CHANGED
data/lib/statsig_driver.rb
CHANGED
@@ -72,9 +72,7 @@ class StatsigDriver
|
|
72
72
|
@evaluator.check_gate(user, gate_name, res, ignore_local_overrides: ignore_local_overrides)
|
73
73
|
|
74
74
|
unless disable_log_exposure
|
75
|
-
@logger.log_gate_exposure(
|
76
|
-
user, res.name, res.gate_value, res.rule_id, res.secondary_exposures, res.evaluation_details
|
77
|
-
)
|
75
|
+
@logger.log_gate_exposure(user, res)
|
78
76
|
end
|
79
77
|
|
80
78
|
FeatureGate.from_config_result(res)
|
@@ -113,7 +111,7 @@ class StatsigDriver
|
|
113
111
|
res = Statsig::ConfigResult.new(name: gate_name)
|
114
112
|
@evaluator.check_gate(user, gate_name, res)
|
115
113
|
context = { :is_manual_exposure => true }
|
116
|
-
@logger.log_gate_exposure(user,
|
114
|
+
@logger.log_gate_exposure(user, res, context)
|
117
115
|
end
|
118
116
|
end
|
119
117
|
|
@@ -154,7 +152,7 @@ class StatsigDriver
|
|
154
152
|
@evaluator.get_config(user, config_name, res)
|
155
153
|
|
156
154
|
context = { :is_manual_exposure => true }
|
157
|
-
@logger.log_config_exposure(user, res
|
155
|
+
@logger.log_config_exposure(user, res, context)
|
158
156
|
end
|
159
157
|
end
|
160
158
|
|
@@ -385,7 +383,7 @@ class StatsigDriver
|
|
385
383
|
@evaluator.get_config(user, config_name, res, user_persisted_values: user_persisted_values, ignore_local_overrides: ignore_local_overrides)
|
386
384
|
|
387
385
|
unless disable_log_exposure
|
388
|
-
@logger.log_config_exposure(user, res
|
386
|
+
@logger.log_config_exposure(user, res)
|
389
387
|
end
|
390
388
|
|
391
389
|
DynamicConfig.new(res.name, res.json_value, res.rule_id, res.group_name, res.id_type, res.evaluation_details)
|
data/lib/statsig_logger.rb
CHANGED
@@ -38,42 +38,49 @@ module Statsig
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
def log_gate_exposure(user,
|
41
|
+
def log_gate_exposure(user, result, context = nil)
|
42
42
|
event = StatsigEvent.new($gate_exposure_event)
|
43
43
|
event.user = user
|
44
44
|
metadata = {
|
45
|
-
gate:
|
46
|
-
gateValue:
|
47
|
-
ruleID: rule_id || Statsig::Const::EMPTY_STR,
|
45
|
+
gate: result.name,
|
46
|
+
gateValue: result.gate_value.to_s,
|
47
|
+
ruleID: result.rule_id || Statsig::Const::EMPTY_STR,
|
48
48
|
}
|
49
|
+
if result.config_version != nil
|
50
|
+
metadata[:configVersion] = result.config_version.to_s
|
51
|
+
end
|
49
52
|
if @debug_info != nil
|
50
53
|
metadata[:debugInfo] = @debug_info
|
51
54
|
end
|
52
55
|
return false if not is_unique_exposure(user, $gate_exposure_event, metadata)
|
53
56
|
event.metadata = metadata
|
54
57
|
|
55
|
-
event.secondary_exposures = secondary_exposures.is_a?(Array) ? secondary_exposures : []
|
58
|
+
event.secondary_exposures = result.secondary_exposures.is_a?(Array) ? result.secondary_exposures : []
|
56
59
|
|
57
|
-
safe_add_eval_details(
|
60
|
+
safe_add_eval_details(result.evaluation_details, event)
|
58
61
|
safe_add_exposure_context(context, event)
|
59
62
|
log_event(event)
|
60
63
|
end
|
61
64
|
|
62
|
-
def log_config_exposure(user,
|
65
|
+
def log_config_exposure(user, result, context = nil)
|
63
66
|
event = StatsigEvent.new($config_exposure_event)
|
64
67
|
event.user = user
|
65
68
|
metadata = {
|
66
|
-
config:
|
67
|
-
ruleID: rule_id || Statsig::Const::EMPTY_STR,
|
69
|
+
config: result.name,
|
70
|
+
ruleID: result.rule_id || Statsig::Const::EMPTY_STR,
|
71
|
+
rulePassed: result.gate_value.to_s,
|
68
72
|
}
|
73
|
+
if result.config_version != nil
|
74
|
+
metadata[:configVersion] = result.config_version.to_s
|
75
|
+
end
|
69
76
|
if @debug_info != nil
|
70
77
|
metadata[:debugInfo] = @debug_info
|
71
78
|
end
|
72
79
|
return false if not is_unique_exposure(user, $config_exposure_event, metadata)
|
73
80
|
event.metadata = metadata
|
74
|
-
event.secondary_exposures = secondary_exposures.is_a?(Array) ? secondary_exposures : []
|
81
|
+
event.secondary_exposures = result.secondary_exposures.is_a?(Array) ? result.secondary_exposures : []
|
75
82
|
|
76
|
-
safe_add_eval_details(
|
83
|
+
safe_add_eval_details(result.evaluation_details, event)
|
77
84
|
safe_add_exposure_context(context, event)
|
78
85
|
log_event(event)
|
79
86
|
end
|
@@ -96,6 +103,9 @@ module Statsig
|
|
96
103
|
parameterName: parameter_name,
|
97
104
|
isExplicitParameter: String(is_explicit)
|
98
105
|
}
|
106
|
+
if config_evaluation.config_version != nil
|
107
|
+
metadata[:configVersion] = config_evaluation.config_version.to_s
|
108
|
+
end
|
99
109
|
if @debug_info != nil
|
100
110
|
metadata[:debugInfo] = @debug_info
|
101
111
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: statsig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Statsig, Inc
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|