lib/split/user.rb in split-3.3.2 vs lib/split/user.rb in split-3.4.0
- old
+ new
@@ -1,25 +1,29 @@
+# frozen_string_literal: true
require 'forwardable'
module Split
class User
extend Forwardable
def_delegators :@user, :keys, :[], :[]=, :delete
attr_reader :user
def initialize(context, adapter=nil)
@user = adapter || Split::Persistence.adapter.new(context)
+ @cleaned_up = false
end
def cleanup_old_experiments!
+ return if @cleaned_up
keys_without_finished(user.keys).each do |key|
experiment = ExperimentCatalog.find key_without_version(key)
if experiment.nil? || experiment.has_winner? || experiment.start_time.nil?
user.delete key
user.delete Experiment.finished_key(key)
end
end
+ @cleaned_up = true
end
def max_experiments_reached?(experiment_key)
if Split.configuration.allow_multiple_experiments == 'control'
experiments = active_experiments
@@ -36,10 +40,10 @@
keys_without_experiment(keys, experiment.key).each { |key| user.delete(key) }
end
def active_experiments
experiment_pairs = {}
- user.keys.each do |key|
+ keys_without_finished(user.keys).each do |key|
Metric.possible_experiments(key_without_version(key)).each do |experiment|
if !experiment.has_winner?
experiment_pairs[key_without_version(key)] = user[key]
end
end