statsig 2.7.0 → 2.8.0

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: 03e6d3622747b21150f1b9af0da570e2771c1a2794eeb0806decda2a358f5530
4
- data.tar.gz: 6368ec902764c9347d56690d2369dd17763adea6b54dc18228e7fde41fab729c
3
+ metadata.gz: 311fb1d15c6ec0f4ed51f2f73f996635607a535080baebbdba25eb30fc1fe2c3
4
+ data.tar.gz: 4e6a9f2e4aaa47e0bc01fb1dd3d2b3156ac50912424e1b2003e7bd6d10dafaaf
5
5
  SHA512:
6
- metadata.gz: 3ff3889f41fdcf86498dfbc7c8865e1a7d02236e75adaa2e6bf98afd4f6e8803506248e4c14f23346764f02ce8c957e4f66dfd9923047bc382084de976f08d79
7
- data.tar.gz: def37cb5444b646dbe4e04057f5661ec1c58509c687b0b25014bb1078cec5bda4fb4a48291bd00afe9e82ed2877717dfd47e19f587aa30f0cb89e4009a9b183a
6
+ metadata.gz: 90177dc37af7c7ce248aa4542300d9091d5fc06baa6e8f012a9f96664e886b78a4b318124bc7b68ee3359e6fe8d6d66b1998134b679021c6ddf86c79a228006f
7
+ data.tar.gz: 3f9121c12308a26f56f0181593c5213702fa7707b17d7ff9e7d8834ba2b6c4eb8827d17307cbf4fd1d1f80de32716e3bf3bcec8b49385be73fee4c8f7c7b540f
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
 
@@ -568,6 +568,10 @@ module Statsig
568
568
  @experiment_overrides.clear
569
569
  end
570
570
 
571
+ def remove_experiment_override(experiment_name)
572
+ @experiment_overrides.delete(experiment_name.to_sym)
573
+ end
574
+
571
575
  def eval_spec(config_name, user, config, end_result, is_nested: false)
572
576
  config[:rules].each do |rule|
573
577
  end_result.sampling_rate = rule[:samplingRate]
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
 
@@ -374,6 +373,11 @@ module Statsig
374
373
  @shared_instance&.clear_experiment_overrides
375
374
  end
376
375
 
376
+ def self.remove_experiment_override(experiment_name)
377
+ ensure_initialized
378
+ @shared_instance&.remove_experiment_override(experiment_name)
379
+ end
380
+
377
381
  ##
378
382
  # @param [HashTable] debug information log with exposure events
379
383
  def self.set_debug_info(debug_info)
@@ -406,7 +410,7 @@ module Statsig
406
410
  def self.get_statsig_metadata
407
411
  {
408
412
  'sdkType' => 'ruby-server',
409
- 'sdkVersion' => '2.7.0',
413
+ 'sdkVersion' => '2.8.0',
410
414
  'languageVersion' => RUBY_VERSION
411
415
  }
412
416
  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
 
@@ -337,6 +338,12 @@ class StatsigDriver
337
338
  end
338
339
  end
339
340
 
341
+ def remove_experiment_override(experiment_name)
342
+ @err_boundary.capture(caller: __method__) do
343
+ @evaluator.remove_experiment_override(experiment_name)
344
+ end
345
+ end
346
+
340
347
  def set_debug_info(debug_info)
341
348
  @err_boundary.capture(caller: __method__) do
342
349
  @logger.set_debug_info(debug_info)
@@ -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.7.0
4
+ version: 2.8.0
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-14 00:00:00.000000000 Z
11
+ date: 2025-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler