statsig 1.10.0 → 1.11.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: dd12cded3010fd966063f91670f1a8f0531196afb96d81f4470311a8d978606d
4
- data.tar.gz: f5e3f6715c245263cc1702172da20ad164d20e76dc69a285bcfafe72f7e809ef
3
+ metadata.gz: c8f1e2b0340c9bbeb49888f54d13505bc7b89c8a70d33e5adaed1e4b95568798
4
+ data.tar.gz: f70a5060da61c965bbe7e93d0ee7a42cbb30fd0504228959aba7d5ca894278a2
5
5
  SHA512:
6
- metadata.gz: 1dde66bd943e314af8359a243eab9251c2b6bff7a11cb7d988f9ce02d5608b740f0aeb82030e751b553fe355b2a65a41ecc6ac7a23f84dc64c382926a73c72da
7
- data.tar.gz: b3d22016c1753ba81daab0039b67a51109fcd240d38514458701c73fb1af0c2cd6a7ac219cd9ef5a34ff2bbac760fe595d17cc4410297799fecfff8a0211bb4f
6
+ metadata.gz: cadde7dcab3590b3d9a3d44bc3856f847b5cb50e9b8f365c1287ebad6bff59a5f82aeaef74e8ab958fb6e8e489ee811df9998cf86f1c18b588389f6194f2f2c0
7
+ data.tar.gz: 879e6ee89157ee4e86032d0d28c6588f21236b3503955150f6e702d06feaac503a8572696c82fe40b086a1e6df17900952c7b08e35f46162df8c50938e0f1225
@@ -13,4 +13,10 @@ class DynamicConfig
13
13
  return default_value if @value.nil? || !@value.key?(index)
14
14
  @value[index]
15
15
  end
16
+
17
+ def get_typed(index, default_value)
18
+ return default_value if @value.nil? || !@value.key?(index)
19
+ return default_value if @value[index].class != default_value.class and default_value.class != TrueClass and default_value.class != FalseClass
20
+ @value[index]
21
+ end
16
22
  end
data/lib/layer.rb CHANGED
@@ -18,4 +18,15 @@ class Layer
18
18
 
19
19
  @value[index]
20
20
  end
21
+
22
+ def get_typed(index, default_value)
23
+ return default_value if @value.nil? || !@value.key?(index)
24
+ return default_value if @value[index].class != default_value.class and default_value.class != TrueClass and default_value.class != FalseClass
25
+
26
+ if @exposure_log_func.is_a? Proc
27
+ @exposure_log_func.call(self, index)
28
+ end
29
+
30
+ @value[index]
31
+ end
21
32
  end
data/lib/statsig.rb CHANGED
@@ -45,7 +45,7 @@ module Statsig
45
45
  def self.get_statsig_metadata
46
46
  {
47
47
  'sdkType' => 'ruby-server',
48
- 'sdkVersion' => '1.10.0',
48
+ 'sdkVersion' => '1.11.0',
49
49
  }
50
50
  end
51
51
 
@@ -23,7 +23,7 @@ class StatsigDriver
23
23
  @shutdown = false
24
24
  @secret_key = secret_key
25
25
  @net = Statsig::Network.new(secret_key, @options.api_url_base)
26
- @logger = Statsig::StatsigLogger.new(@net)
26
+ @logger = Statsig::StatsigLogger.new(@net, @options)
27
27
  @evaluator = Statsig::Evaluator.new(@net, @options, error_callback)
28
28
  end
29
29
 
@@ -6,15 +6,16 @@ $layer_exposure_event = 'statsig::layer_exposure'
6
6
 
7
7
  module Statsig
8
8
  class StatsigLogger
9
- def initialize(network)
9
+ def initialize(network, options)
10
10
  @network = network
11
11
  @events = []
12
12
  @background_flush = periodic_flush
13
+ @options = options
13
14
  end
14
15
 
15
16
  def log_event(event)
16
17
  @events.push(event)
17
- if @events.length >= 1000
18
+ if @events.length >= @options.logging_max_buffer_size
18
19
  flush
19
20
  end
20
21
  end
@@ -70,7 +71,7 @@ module Statsig
70
71
  def periodic_flush
71
72
  Thread.new do
72
73
  loop do
73
- sleep 60
74
+ sleep @options.logging_interval_seconds
74
75
  flush
75
76
  end
76
77
  end
@@ -3,15 +3,21 @@ class StatsigOptions
3
3
  attr_reader :api_url_base
4
4
  attr_reader :rulesets_sync_interval
5
5
  attr_reader :idlists_sync_interval
6
+ attr_reader :logging_interval_seconds
7
+ attr_reader :logging_max_buffer_size
6
8
 
7
9
  def initialize(
8
10
  environment=nil,
9
11
  api_url_base='https://statsigapi.net/v1',
10
12
  rulesets_sync_interval: 10,
11
- idlists_sync_interval: 60)
13
+ idlists_sync_interval: 60,
14
+ logging_interval_seconds: 60,
15
+ logging_max_buffer_size: 1000)
12
16
  @environment = environment.is_a?(Hash) ? environment : nil
13
17
  @api_url_base = api_url_base
14
18
  @rulesets_sync_interval = rulesets_sync_interval
15
19
  @idlists_sync_interval = idlists_sync_interval
20
+ @logging_interval_seconds = logging_interval_seconds
21
+ @logging_max_buffer_size = [logging_max_buffer_size, 1000].min
16
22
  end
17
23
  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: 1.10.0
4
+ version: 1.11.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: 2022-07-07 00:00:00.000000000 Z
11
+ date: 2022-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -153,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
153
  - !ruby/object:Gem::Version
154
154
  version: '0'
155
155
  requirements: []
156
- rubygems_version: 3.2.3
156
+ rubygems_version: 3.3.11
157
157
  signing_key:
158
158
  specification_version: 4
159
159
  summary: Statsig server SDK for Ruby