lib/split/user.rb in split-3.4.1 vs lib/split/user.rb in split-4.0.0.pre
- old
+ new
@@ -1,15 +1,16 @@
# 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)
+ def initialize(context, adapter = nil)
@user = adapter || Split::Persistence.adapter.new(context)
@cleaned_up = false
end
def cleanup_old_experiments!
@@ -25,11 +26,12 @@
end
def max_experiments_reached?(experiment_key)
if Split.configuration.allow_multiple_experiments == 'control'
experiments = active_experiments
- count_control = experiments.count {|k,v| k == experiment_key || v == 'control'}
+ experiment_key_without_version = key_without_version(experiment_key)
+ count_control = experiments.count {|k, v| k == experiment_key_without_version || v == 'control'}
experiments.size > count_control
else
!Split.configuration.allow_multiple_experiments &&
keys_without_experiment(user.keys, experiment_key).length > 0
end
@@ -48,9 +50,19 @@
experiment_pairs[key_without_version(key)] = user[key]
end
end
end
experiment_pairs
+ end
+
+ def self.find(user_id, adapter)
+ adapter = adapter.is_a?(Symbol) ? Split::Persistence::ADAPTERS[adapter] : adapter
+
+ if adapter.respond_to?(:find)
+ User.new(nil, adapter.find(user_id))
+ else
+ nil
+ end
end
private
def keys_without_experiment(keys, experiment_key)