statsig 1.10.0 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
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