diff --git a/lib/evaluator.rb b/lib/evaluator.rb index 797a8c9..eedb0a7 100644 --- a/lib/evaluator.rb +++ b/lib/evaluator.rb @@ -568,6 +568,10 @@ def clear_experiment_overrides @experiment_overrides.clear end + def remove_experiment_override(experiment_name) + @experiment_overrides.delete(experiment_name.to_sym) + end + def eval_spec(config_name, user, config, end_result, is_nested: false) config[:rules].each do |rule| end_result.sampling_rate = rule[:samplingRate] diff --git a/lib/statsig.rb b/lib/statsig.rb index d6c0f22..22a2125 100644 --- a/lib/statsig.rb +++ b/lib/statsig.rb @@ -373,6 +373,11 @@ def self.clear_experiment_overrides @shared_instance&.clear_experiment_overrides end + def self.remove_experiment_override(experiment_name) + ensure_initialized + @shared_instance&.remove_experiment_override(experiment_name) + end + ## # @param [HashTable] debug information log with exposure events def self.set_debug_info(debug_info) diff --git a/lib/statsig_driver.rb b/lib/statsig_driver.rb index bc2ca90..865709f 100644 --- a/lib/statsig_driver.rb +++ b/lib/statsig_driver.rb @@ -338,6 +338,12 @@ def clear_experiment_overrides end end + def remove_experiment_override(experiment_name) + @err_boundary.capture(caller: __method__) do + @evaluator.remove_experiment_override(experiment_name) + end + end + def set_debug_info(debug_info) @err_boundary.capture(caller: __method__) do @logger.set_debug_info(debug_info) diff --git a/test/local_overrides_test.rb b/test/local_overrides_test.rb index 4a6eae9..f916a66 100644 --- a/test/local_overrides_test.rb +++ b/test/local_overrides_test.rb @@ -117,6 +117,12 @@ def test_override_experiment_by_group_name assert_equal('LocalOverride', exp.evaluation_details&.reason) assert_equal('2RamGujUou6h2bVNQWhtNZ', exp.rule_id) + Statsig.remove_experiment_override('sample_experiment') + exp = Statsig.get_experiment(user, 'sample_experiment') + assert_equal('Test', exp.group_name) + assert_equal('Bootstrap', exp.evaluation_details&.reason) + assert_equal('2RamGujUou6h2bVNQWhtNZ', exp.rule_id) + exp = Statsig.get_experiment(user, 'sample_experiment', Statsig::GetExperimentOptions.new(ignore_local_overrides: true)) assert_equal('Test', exp.group_name) assert_equal('Bootstrap', exp.evaluation_details&.reason)