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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3870c3be99d3f7295c21311a6e938599bbd0ebd260d4b2c2cb814b48d22bd7f4
4
- data.tar.gz: 618400ee2baa54a9e4bc18ee7e6e1a1cb017349a513919dd5f5e6caa380fb154
3
+ metadata.gz: 7b9e465d382f7e7e2a4640eaf549bc3e882b0aac3c2333c9874fc6855a6af1cc
4
+ data.tar.gz: 844845547c6b1914908e38438dc932486e3ea5740ef32c3b59eb1cc67a4274ed
5
5
  SHA512:
6
- metadata.gz: 47fdd678ef31a026f84bf81a184b39fc171c4d35cb7fb9229ecc2ec835051645cd9ed7b4f6ec2c0bfb92c2b59fe6cd9e742afaff176b438192f6d7b8d07f7ceb
7
- data.tar.gz: 6db827709c35c1005a22dbf07e81f3ee8d6f316c89ba760beea2ba4adf2a35ae1d5ad2ea97604411733f61e4d167a6ebcbfa1e0dcef05986aacde37aab76dcf0
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 ? rule[:returnValue] == true : config[:defaultValue] == true
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
@@ -370,7 +370,7 @@ module Statsig
370
370
  def self.get_statsig_metadata
371
371
  {
372
372
  'sdkType' => 'ruby-server',
373
- 'sdkVersion' => '2.2.0',
373
+ 'sdkVersion' => '2.2.1',
374
374
  'languageVersion' => RUBY_VERSION
375
375
  }
376
376
  end
@@ -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, gate_name, res.gate_value, res.rule_id, res.secondary_exposures, res.evaluation_details, context)
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.name, res.rule_id, res.secondary_exposures, res.evaluation_details, context)
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.name, res.rule_id, res.secondary_exposures, res.evaluation_details)
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)
@@ -38,42 +38,49 @@ module Statsig
38
38
  end
39
39
  end
40
40
 
41
- def log_gate_exposure(user, gate_name, value, rule_id, secondary_exposures, eval_details, context = nil)
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: gate_name,
46
- gateValue: value.to_s,
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(eval_details, event)
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, config_name, rule_id, secondary_exposures, eval_details, context = nil)
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: config_name,
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(eval_details, event)
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.0
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-10-11 00:00:00.000000000 Z
11
+ date: 2024-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler