Class: StatsigDriver
- Inherits:
-
Object
- Object
- StatsigDriver
- Defined in:
- lib/statsig_driver.rb
Instance Method Summary collapse
- #check_gate(user, gate_name) ⇒ Object
- #get_client_initialize_response(user) ⇒ Hash
- #get_config(user, dynamic_config_name) ⇒ Object
- #get_experiment(user, experiment_name) ⇒ Object
- #get_layer(user, layer_name) ⇒ Object
-
#initialize(secret_key, options = nil, error_callback = nil) ⇒ StatsigDriver
constructor
A new instance of StatsigDriver.
- #log_event(user, event_name, value = nil, metadata = nil) ⇒ Object
- #maybe_restart_background_threads ⇒ Object
- #override_config(config_name, config_value) ⇒ Object
- #override_gate(gate_name, gate_value) ⇒ Object
- #shutdown ⇒ Object
Constructor Details
#initialize(secret_key, options = nil, error_callback = nil) ⇒ StatsigDriver
Returns a new instance of StatsigDriver.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/statsig_driver.rb', line 13 def initialize(secret_key, = nil, error_callback = nil) super() if !secret_key.is_a?(String) || !secret_key.start_with?('secret-') raise 'Invalid secret key provided. Provide your project secret key from the Statsig console' end if !.nil? && !.instance_of?(StatsigOptions) raise 'Invalid options provided. Either provide a valid StatsigOptions object or nil' end @options = || StatsigOptions.new @shutdown = false @secret_key = secret_key @net = Statsig::Network.new(secret_key, @options.api_url_base, @options.local_mode) @logger = Statsig::StatsigLogger.new(@net, @options) @evaluator = Statsig::Evaluator.new(@net, @options, error_callback) end |
Instance Method Details
#check_gate(user, gate_name) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/statsig_driver.rb', line 30 def check_gate(user, gate_name) user = verify_inputs(user, gate_name, "gate_name") res = @evaluator.check_gate(user, gate_name) if res.nil? res = Statsig::ConfigResult.new(gate_name) end if res == $fetch_from_server res = check_gate_fallback(user, gate_name) # exposure logged by the server else @logger.log_gate_exposure(user, res.name, res.gate_value, res.rule_id, res.secondary_exposures, res.evaluation_details) end res.gate_value end |
#get_client_initialize_response(user) ⇒ Hash
111 112 113 114 |
# File 'lib/statsig_driver.rb', line 111 def get_client_initialize_response(user) normalize_user(user) @evaluator.get_client_initialize_response(user) end |
#get_config(user, dynamic_config_name) ⇒ Object
48 49 50 51 |
# File 'lib/statsig_driver.rb', line 48 def get_config(user, dynamic_config_name) user = verify_inputs(user, dynamic_config_name, "dynamic_config_name") get_config_impl(user, dynamic_config_name) end |
#get_experiment(user, experiment_name) ⇒ Object
53 54 55 56 |
# File 'lib/statsig_driver.rb', line 53 def get_experiment(user, experiment_name) user = verify_inputs(user, experiment_name, "experiment_name") get_config_impl(user, experiment_name) end |
#get_layer(user, layer_name) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/statsig_driver.rb', line 58 def get_layer(user, layer_name) user = verify_inputs(user, layer_name, "layer_name") res = @evaluator.get_layer(user, layer_name) if res.nil? res = Statsig::ConfigResult.new(layer_name) end if res == $fetch_from_server if res.config_delegate.empty? return Layer.new(layer_name) end res = get_config_fallback(user, res.config_delegate) # exposure logged by the server end Layer.new(res.name, res.json_value, res.rule_id, lambda { |layer, parameter_name| @logger.log_layer_exposure(user, layer, parameter_name, res) }) end |
#log_event(user, event_name, value = nil, metadata = nil) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/statsig_driver.rb', line 79 def log_event(user, event_name, value = nil, = nil) if !user.nil? && !user.instance_of?(StatsigUser) raise 'Must provide a valid StatsigUser or nil' end check_shutdown user = normalize_user(user) event = StatsigEvent.new(event_name) event.user = user event.value = value event. = event. = Statsig. @logger.log_event(event) end |
#maybe_restart_background_threads ⇒ Object
116 117 118 |
# File 'lib/statsig_driver.rb', line 116 def maybe_restart_background_threads @evaluator.maybe_restart_background_threads end |
#override_config(config_name, config_value) ⇒ Object
105 106 107 |
# File 'lib/statsig_driver.rb', line 105 def override_config(config_name, config_value) @evaluator.override_config(config_name, config_value) end |
#override_gate(gate_name, gate_value) ⇒ Object
101 102 103 |
# File 'lib/statsig_driver.rb', line 101 def override_gate(gate_name, gate_value) @evaluator.override_gate(gate_name, gate_value) end |
#shutdown ⇒ Object
95 96 97 98 99 |
# File 'lib/statsig_driver.rb', line 95 def shutdown @shutdown = true @logger.shutdown @evaluator.shutdown end |