statsig 2.6.0 → 2.7.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: 2e43e289ee71055ef26a191a9daf4d54eb4f6a5dbacb8eb6a9160d1f66c07470
4
- data.tar.gz: 7c457bd018afe66c60c7ba2d1091b6b0c3054487d50cae69c02ebf640d367acf
3
+ metadata.gz: da5438e7812517334d930d0197e5549a56e0c6e578aa9e33a07f2c6b9ef1804e
4
+ data.tar.gz: 47e783b6c2ef006c60842d6c22fb404495089da097ace1188de984e432be2554
5
5
  SHA512:
6
- metadata.gz: 80cf6fe68efe3a458f2e9c6637ea6433d7f6ed93110da01fb0c771ea5cd409623b0f721ecc651810e9146d3796b19c23931396407aae64357795dab6424e7d1d
7
- data.tar.gz: 496ead0234ed956e4d2077cfea9cd95d755a0f7e036c32c7c9504c727f153a511771465c4a0774b94e4243805c6002056fe96f8434257401770622ff7ae5fe4a
6
+ metadata.gz: 0055f81028a6b254721bcdeab44140df4e701ee5e4cf393687b821c749b56eb6df5a5a0d6f9ee16edb8ddfe37805207198441c55d1b5717874c5514572ed04a8
7
+ data.tar.gz: 43a92f8184f5a04c0018cdcce8c5182602b06fb723d29697108f6621e57c1b53df6ea51e357edf72a879be4e0d53b3fdfaa0e94fc5719ec0a5208f0cde8f9f9a
data/lib/api_config.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'constants'
1
+ require_relative 'constants'
2
2
 
3
3
  class UnsupportedConfigException < StandardError
4
4
  end
@@ -1,7 +1,6 @@
1
+ require_relative 'constants'
1
2
  require_relative 'hash_utils'
2
3
 
3
- require 'constants'
4
-
5
4
  module Statsig
6
5
  class ResponseFormatter
7
6
  def self.get_responses(
@@ -1,4 +1,4 @@
1
- require 'statsig_errors'
1
+ require_relative 'statsig_errors'
2
2
 
3
3
  $endpoint = 'https://statsigapi.net/v1/sdk_exception'
4
4
 
data/lib/evaluator.rb CHANGED
@@ -1,15 +1,15 @@
1
- require 'config_result'
2
1
  require 'country_lookup'
3
2
  require 'digest'
4
- require 'evaluation_helpers'
5
- require 'client_initialize_helpers'
6
- require 'spec_store'
7
3
  require 'time'
8
- require 'ua_parser'
9
- require 'evaluation_details'
10
4
  require 'user_agent_parser/operating_system'
11
- require 'user_persistent_storage_utils'
12
- require 'constants'
5
+ require_relative 'client_initialize_helpers'
6
+ require_relative 'config_result'
7
+ require_relative 'constants'
8
+ require_relative 'evaluation_details'
9
+ require_relative 'evaluation_helpers'
10
+ require_relative 'spec_store'
11
+ require_relative 'ua_parser'
12
+ require_relative 'user_persistent_storage_utils'
13
13
 
14
14
  module Statsig
15
15
  class Evaluator
@@ -549,7 +549,7 @@ module Statsig
549
549
  value: rule[:returnValue],
550
550
  group_name: rule[:groupName],
551
551
  rule_id: rule[:id],
552
- evaluation_details: EvaluationDetails.local_override(@config_sync_time, @init_time)
552
+ evaluation_details: EvaluationDetails.local_override(@spec_store.last_config_sync_time, @spec_store.initial_config_sync_time)
553
553
  }
554
554
  return
555
555
  end
@@ -560,7 +560,7 @@ module Statsig
560
560
  value: {},
561
561
  group_name: group_name,
562
562
  rule_id: "#{experiment_name}:override",
563
- evaluation_details: EvaluationDetails.local_override(@config_sync_time, @init_time)
563
+ evaluation_details: EvaluationDetails.local_override(@spec_store.last_config_sync_time, @spec_store.initial_config_sync_time)
564
564
  }
565
565
  end
566
566
 
data/lib/hash_utils.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'json'
2
1
  require 'digest'
2
+ require 'json'
3
3
 
4
4
  TWO_TO_THE_63 = 1 << 63
5
5
  TWO_TO_THE_64 = 1 << 64
data/lib/network.rb CHANGED
@@ -1,10 +1,9 @@
1
+ require 'connection_pool'
1
2
  require 'http'
2
3
  require 'json'
3
4
  require 'securerandom'
4
5
  require 'zlib'
5
6
 
6
- require 'connection_pool'
7
-
8
7
  RETRY_CODES = [408, 500, 502, 503, 504, 522, 524, 599].freeze
9
8
 
10
9
  module Statsig
data/lib/spec_store.rb CHANGED
@@ -1,10 +1,10 @@
1
+ require 'concurrent-ruby'
1
2
  require 'net/http'
2
3
  require 'uri'
3
- require 'evaluation_details'
4
- require 'id_list'
5
- require 'concurrent-ruby'
6
- require 'hash_utils'
7
- require 'api_config'
4
+ require_relative 'api_config'
5
+ require_relative 'evaluation_details'
6
+ require_relative 'hash_utils'
7
+ require_relative 'id_list'
8
8
 
9
9
  module Statsig
10
10
  class SpecStore
data/lib/statsig.rb CHANGED
@@ -1,6 +1,5 @@
1
- require 'statsig_driver'
2
-
3
- require 'statsig_errors'
1
+ require_relative 'statsig_driver'
2
+ require_relative 'statsig_errors'
4
3
 
5
4
  module Statsig
6
5
 
@@ -92,6 +91,11 @@ module Statsig
92
91
  @shared_instance&.manually_log_gate_exposure(user, gate_name)
93
92
  end
94
93
 
94
+ def self.get_fields_used_for_gate(gate_name)
95
+ ensure_initialized
96
+ @shared_instance&.get_fields_used_for_gate(gate_name)
97
+ end
98
+
95
99
  class GetConfigOptions
96
100
  attr_accessor :disable_log_exposure, :disable_evaluation_details, :ignore_local_overrides
97
101
 
@@ -136,6 +140,11 @@ module Statsig
136
140
  @shared_instance&.manually_log_config_exposure(user, dynamic_config)
137
141
  end
138
142
 
143
+ def self.get_fields_used_for_config(config_name)
144
+ ensure_initialized
145
+ @shared_instance&.get_fields_used_for_config(config_name)
146
+ end
147
+
139
148
  class GetExperimentOptions
140
149
  attr_accessor :disable_log_exposure, :user_persisted_values, :disable_evaluation_details, :ignore_local_overrides
141
150
 
@@ -184,6 +193,11 @@ module Statsig
184
193
  @shared_instance&.get_user_persisted_values(user, id_type)
185
194
  end
186
195
 
196
+ def self.get_fields_used_for_experiment(experiment_name)
197
+ ensure_initialized
198
+ @shared_instance&.get_fields_used_for_config(experiment_name)
199
+ end
200
+
187
201
  class GetLayerOptions
188
202
  attr_accessor :disable_log_exposure, :disable_evaluation_details
189
203
 
@@ -227,6 +241,11 @@ module Statsig
227
241
  @shared_instance&.manually_log_layer_parameter_exposure(user, layer_name, parameter_name)
228
242
  end
229
243
 
244
+ def self.get_fields_used_for_layer(layer_name)
245
+ ensure_initialized
246
+ @shared_instance&.get_fields_used_for_layer(layer_name)
247
+ end
248
+
230
249
  ##
231
250
  # Logs an event to Statsig with the provided values.
232
251
  #
@@ -386,7 +405,7 @@ module Statsig
386
405
  def self.get_statsig_metadata
387
406
  {
388
407
  'sdkType' => 'ruby-server',
389
- 'sdkVersion' => '2.6.0',
408
+ 'sdkVersion' => '2.7.1',
390
409
  'languageVersion' => RUBY_VERSION
391
410
  }
392
411
  end
@@ -1,19 +1,20 @@
1
- require 'config_result'
2
- require 'evaluator'
3
- require 'network'
4
- require 'statsig_errors'
5
- require 'statsig_event'
6
- require 'statsig_logger'
7
- require 'statsig_options'
8
- require 'statsig_user'
9
- require 'spec_store'
10
- require 'dynamic_config'
11
- require 'feature_gate'
12
- require 'error_boundary'
13
- require 'layer'
14
- require 'memo'
15
- require 'diagnostics'
16
- require 'sdk_configs'
1
+ require_relative 'api_config'
2
+ require_relative 'config_result'
3
+ require_relative 'diagnostics'
4
+ require_relative 'dynamic_config'
5
+ require_relative 'error_boundary'
6
+ require_relative 'evaluator'
7
+ require_relative 'feature_gate'
8
+ require_relative 'layer'
9
+ require_relative 'memo'
10
+ require_relative 'network'
11
+ require_relative 'sdk_configs'
12
+ require_relative 'spec_store'
13
+ require_relative 'statsig_errors'
14
+ require_relative 'statsig_event'
15
+ require_relative 'statsig_logger'
16
+ require_relative 'statsig_options'
17
+ require_relative 'statsig_user'
17
18
 
18
19
  class StatsigDriver
19
20
 
@@ -117,6 +118,15 @@ class StatsigDriver
117
118
  end
118
119
  end
119
120
 
121
+ def get_fields_used_for_gate(gate_name)
122
+ @err_boundary.capture(caller: __method__, recover: -> { [] }) do
123
+ gate = @store.get_gate(gate_name)
124
+ return [] if gate.nil?
125
+
126
+ gate[:fieldsUsed] || []
127
+ end
128
+ end
129
+
120
130
  def get_config(user, dynamic_config_name, options = nil)
121
131
  @err_boundary.capture(caller: __method__, recover: -> { DynamicConfig.new(dynamic_config_name) }) do
122
132
  run_with_diagnostics(caller: :get_config) do
@@ -132,6 +142,15 @@ class StatsigDriver
132
142
  end
133
143
  end
134
144
 
145
+ def get_fields_used_for_config(config_name)
146
+ @err_boundary.capture(caller: __method__, recover: -> { [] }) do
147
+ config = @store.get_config(config_name)
148
+ return [] if config.nil?
149
+
150
+ config[:fieldsUsed] || []
151
+ end
152
+ end
153
+
135
154
  def get_experiment(user, experiment_name, options = nil)
136
155
  @err_boundary.capture(caller: __method__, recover: -> { DynamicConfig.new(experiment_name) }) do
137
156
  run_with_diagnostics(caller: :get_experiment) do
@@ -201,6 +220,15 @@ class StatsigDriver
201
220
  end
202
221
  end
203
222
 
223
+ def get_fields_used_for_layer(layer_name)
224
+ @err_boundary.capture(caller: __method__, recover: -> { [] }) do
225
+ layer = @store.get_layer(layer_name)
226
+ return [] if layer.nil?
227
+
228
+ layer[:fieldsUsed] || []
229
+ end
230
+ end
231
+
204
232
  def log_event(user, event_name, value = nil, metadata = nil)
205
233
  @err_boundary.capture(caller: __method__) do
206
234
  if !user.nil? && !user.instance_of?(StatsigUser)
@@ -1,8 +1,8 @@
1
- require 'constants'
2
- require 'statsig_event'
3
- require 'ttl_set'
4
1
  require 'concurrent-ruby'
5
- require 'hash_utils'
2
+ require_relative 'constants'
3
+ require_relative 'hash_utils'
4
+ require_relative 'statsig_event'
5
+ require_relative 'ttl_set'
6
6
 
7
7
  $gate_exposure_event = 'statsig::gate_exposure'
8
8
  $config_exposure_event = 'statsig::config_exposure'
data/lib/statsig_user.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'json'
2
- require 'constants'
2
+ require_relative 'constants'
3
3
  ##
4
4
  # The user object to be evaluated against your Statsig configurations (gates/experiments/dynamic configs).
5
5
  class StatsigUser
@@ -1,4 +1,4 @@
1
- require 'statsig_options'
1
+ require_relative 'statsig_options'
2
2
 
3
3
  module Statsig
4
4
  class UserPersistentStorageUtils
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.6.0
4
+ version: 2.7.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: 2025-10-09 00:00:00.000000000 Z
11
+ date: 2025-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler