Sha256: 6b383f44e72a6cc8f2b71bdeead0a203000d90fca2d5eba38d18f90c3bd1e702
Contents?: true
Size: 1.32 KB
Versions: 1
Compression:
Stored size: 1.32 KB
Contents
module Split module Helper def ab_test(experiment_name, *alternatives) experiment = Split::Experiment.find_or_create(experiment_name, *alternatives) return experiment.winner.name if experiment.winner if forced_alternative = override(experiment_name, alternatives) return forced_alternative end ab_user[experiment_name] = experiment.control.name if is_robot? if ab_user[experiment_name] return ab_user[experiment_name] else alternative = experiment.next_alternative alternative.increment_participation ab_user[experiment_name] = alternative.name return alternative.name end end def finished(experiment_name) return if is_robot? alternative_name = ab_user[experiment_name] alternative = Split::Alternative.find(alternative_name, experiment_name) alternative.increment_completion session[:split].delete(experiment_name) end def override(experiment_name, alternatives) return params[experiment_name] if defined?(params) && alternatives.include?(params[experiment_name]) end def ab_user session[:split] ||= {} end def is_robot? request.user_agent =~ /\b(Baidu|Gigabot|Googlebot|libwww-perl|lwp-trivial|msnbot|SiteUptime|Slurp|WordPress|ZIBB|ZyBorg)\b/i end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
split-0.2.1 | lib/split/helper.rb |