Class: Split::User
Instance Attribute Summary collapse
-
#user ⇒ Object
readonly
Returns the value of attribute user.
Instance Method Summary collapse
- #active_experiments ⇒ Object
- #cleanup_old_experiments! ⇒ Object
- #cleanup_old_versions!(experiment) ⇒ Object
-
#initialize(context, adapter = nil) ⇒ User
constructor
A new instance of User.
- #max_experiments_reached?(experiment_key) ⇒ Boolean
Constructor Details
#initialize(context, adapter = nil) ⇒ User
Returns a new instance of User.
9 10 11 |
# File 'lib/split/user.rb', line 9 def initialize(context, adapter=nil) @user = adapter || Split::Persistence.adapter.new(context) end |
Instance Attribute Details
#user ⇒ Object (readonly)
Returns the value of attribute user.
7 8 9 |
# File 'lib/split/user.rb', line 7 def user @user end |
Instance Method Details
#active_experiments ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/split/user.rb', line 39 def active_experiments experiment_pairs = {} 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 end experiment_pairs end |
#cleanup_old_experiments! ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/split/user.rb', line 13 def cleanup_old_experiments! 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 end |
#cleanup_old_versions!(experiment) ⇒ Object
34 35 36 37 |
# File 'lib/split/user.rb', line 34 def cleanup_old_versions!(experiment) keys = user.keys.select { |k| k.match(Regexp.new(experiment.name)) } keys_without_experiment(keys, experiment.key).each { |key| user.delete(key) } end |
#max_experiments_reached?(experiment_key) ⇒ Boolean
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/split/user.rb', line 23 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'} experiments.size > count_control else !Split.configuration.allow_multiple_experiments && keys_without_experiment(user.keys, experiment_key).length > 0 end end |