statsig 1.7.0.beta.2 → 1.7.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: 889dec377c0c563738b53a97153d54cde36d34518bfa67d1e56a1f2ac6b161b3
4
- data.tar.gz: 9da0ba2bf4b241042e5e2a2ae0822700f2906f0454d5ddfda625b99b69c1fd2f
3
+ metadata.gz: d24b945d9500781cda02ab594f003360d81c5a1bca99f366a2ceb95013b53dad
4
+ data.tar.gz: 63c9ea1a9d6347ecec9bff74949665b2af20bfe774e21a6851e96ba9b7eea397
5
5
  SHA512:
6
- metadata.gz: fd0c026a5d93e99c8862fa36e215c185aef5704173c1f56fde1ff01765d276633880233e0d60b65f079b00f63d6618c447dfd10f1f037311b30804b5362db916
7
- data.tar.gz: 4cf98a1164ce38977d05d682d94b761eda719e7cb1188a363c0b565e1ea9ad402f8719454363edf83dfefba4603666e2e1bd64573b04cbb899d008815e20b665
6
+ metadata.gz: e47350b9ba8e20f659b65a909955d40e66bf2397306aa798aaab60e73fb3b58fd1d3cade5ea0077fd37f847c5f6e976f7ecbfc978db4830884e463bfa6656574
7
+ data.tar.gz: 8e8b11dd34de6f35585c916d3125be3a36f6f897b69facb1788364702bcd15d1729109d8ad8aadfda98f9909a7f053077433ba6221f3ca7c27d2b5686214fda6
@@ -2,7 +2,7 @@ require 'time'
2
2
 
3
3
  module EvaluationHelpers
4
4
  def self.compare_numbers(a, b, func)
5
- return false unless self.is_numeric(a) && self.is_numeric(b)
5
+ return false unless is_numeric(a) && is_numeric(b)
6
6
  func.call(a.to_f, b.to_f) rescue false
7
7
  end
8
8
 
@@ -15,20 +15,22 @@ module EvaluationHelpers
15
15
 
16
16
  def self.compare_times(a, b, func)
17
17
  begin
18
- time_1 = self.get_epoch_time(a)
19
- time_2 = self.get_epoch_time(b)
18
+ time_1 = get_epoch_time(a)
19
+ time_2 = get_epoch_time(b)
20
20
  func.call(time_1, time_2)
21
21
  rescue
22
22
  false
23
23
  end
24
24
  end
25
25
 
26
+ private
27
+
26
28
  def self.is_numeric(v)
27
29
  !(v.to_s =~ /\A[-+]?\d*\.?\d+\z/).nil?
28
30
  end
29
31
 
30
32
  def self.get_epoch_time(v)
31
- time = self.is_numeric(v) ? Time.at(v.to_f) : Time.parse(v)
33
+ time = is_numeric(v) ? Time.at(v.to_f) : Time.parse(v)
32
34
  if time.year > Time.now.year + 100
33
35
  # divide by 1000 when the epoch time is in milliseconds instead of seconds
34
36
  return time.to_i / 1000
data/lib/evaluator.rb CHANGED
@@ -20,14 +20,16 @@ class Evaluator
20
20
 
21
21
  def check_gate(user, gate_name)
22
22
  return nil unless @initialized && @spec_store.has_gate?(gate_name)
23
- self.eval_spec(user, @spec_store.get_gate(gate_name))
23
+ eval_spec(user, @spec_store.get_gate(gate_name))
24
24
  end
25
25
 
26
26
  def get_config(user, config_name)
27
27
  return nil unless @initialized && @spec_store.has_config?(config_name)
28
- self.eval_spec(user, @spec_store.get_config(config_name))
28
+ eval_spec(user, @spec_store.get_config(config_name))
29
29
  end
30
30
 
31
+ private
32
+
31
33
  def eval_spec(user, config)
32
34
  default_rule_id = 'default'
33
35
  exposures = []
@@ -35,11 +37,11 @@ class Evaluator
35
37
  i = 0
36
38
  until i >= config['rules'].length do
37
39
  rule = config['rules'][i]
38
- result = self.eval_rule(user, rule)
40
+ result = eval_rule(user, rule)
39
41
  return $fetch_from_server if result == $fetch_from_server
40
42
  exposures = exposures + result['exposures'] if result['exposures'].is_a? Array
41
43
  if result['value']
42
- pass = self.eval_pass_percent(user, rule, config['salt'])
44
+ pass = eval_pass_percent(user, rule, config['salt'])
43
45
  return ConfigResult.new(
44
46
  config['name'],
45
47
  pass,
@@ -62,7 +64,7 @@ class Evaluator
62
64
  pass = true
63
65
  i = 0
64
66
  until i >= rule['conditions'].length do
65
- result = self.eval_condition(user, rule['conditions'][i])
67
+ result = eval_condition(user, rule['conditions'][i])
66
68
  if result == $fetch_from_server
67
69
  return $fetch_from_server
68
70
  end
@@ -94,7 +96,7 @@ class Evaluator
94
96
  when 'public'
95
97
  return true
96
98
  when 'fail_gate', 'pass_gate'
97
- other_gate_result = self.check_gate(user, target)
99
+ other_gate_result = check_gate(user, target)
98
100
  return $fetch_from_server if other_gate_result == $fetch_from_server
99
101
 
100
102
  gate_value = other_gate_result&.gate_value == true
data/lib/statsig.rb CHANGED
@@ -11,22 +11,22 @@ module Statsig
11
11
  end
12
12
 
13
13
  def self.check_gate(user, gate_name)
14
- self.ensure_initialized
14
+ ensure_initialized
15
15
  @shared_instance&.check_gate(user, gate_name)
16
16
  end
17
17
 
18
18
  def self.get_config(user, dynamic_config_name)
19
- self.ensure_initialized
19
+ ensure_initialized
20
20
  @shared_instance&.get_config(user, dynamic_config_name)
21
21
  end
22
22
 
23
23
  def self.get_experiment(user, experiment_name)
24
- self.ensure_initialized
24
+ ensure_initialized
25
25
  @shared_instance&.get_config(user, experiment_name)
26
26
  end
27
27
 
28
28
  def self.log_event(user, event_name, value, metadata)
29
- self.ensure_initialized
29
+ ensure_initialized
30
30
  @shared_instance&.log_event(user, event_name, value, metadata)
31
31
  end
32
32
 
@@ -37,6 +37,8 @@ module Statsig
37
37
  @shared_instance = nil
38
38
  end
39
39
 
40
+ private
41
+
40
42
  def self.ensure_initialized
41
43
  if @shared_instance.nil?
42
44
  raise 'Must call initialize first.'
@@ -121,6 +121,8 @@ class StatsigDriver
121
121
  @polling_thread&.exit
122
122
  end
123
123
 
124
+ private
125
+
124
126
  def validate_user(user)
125
127
  if user.nil? || !user.instance_of?(StatsigUser) || !user.user_id.is_a?(String)
126
128
  raise 'Must provide a valid StatsigUser with a user_id to use the server SDK. See https://docs.statsig.com/messages/serverRequiredUserID/ for more details.'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statsig
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0.beta.2
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Statsig, Inc
@@ -141,9 +141,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
141
  version: '0'
142
142
  required_rubygems_version: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - ">"
144
+ - - ">="
145
145
  - !ruby/object:Gem::Version
146
- version: 1.3.1
146
+ version: '0'
147
147
  requirements: []
148
148
  rubygems_version: 3.2.3
149
149
  signing_key: