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)