statsig 1.7.0.beta.2 → 1.7.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: 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: