module Fabes::Helper
Public Instance Methods
fabes(name, control, *alternatives)
click to toggle source
# File lib/fabes/helper.rb, line 3 def fabes(name, control, *alternatives) experiment = Fabes::Experiment.find_or_create(name, *([control] + alternatives)) if trackable_for experiment.name alternative = experiment.select_alternative! set_cookie_for experiment, alternative alternative.increment_participants! alternative.update_weight else alternative = current_alternative_for experiment end alternative.payload rescue control end
score!(name)
click to toggle source
# File lib/fabes/helper.rb, line 19 def score!(name) experiment = Fabes::Experiment.find name alternative = current_alternative_for experiment if scorable? experiment.name alternative.increment_hits! alternative.update_weight mark_as_scored experiment.name end rescue #Failed scoring, do nothin' nil end
Private Instance Methods
current_alternative_for(experiment)
click to toggle source
# File lib/fabes/helper.rb, line 42 def current_alternative_for(experiment) id = tracking[experiment.name] experiment.find_alternative id end
mark_as_scored(name)
click to toggle source
# File lib/fabes/helper.rb, line 63 def mark_as_scored(name) tracking[name] = :done end
marked_as_scored?(name)
click to toggle source
# File lib/fabes/helper.rb, line 59 def marked_as_scored?(name) tracking[name] == :done end
scorable?(name)
click to toggle source
# File lib/fabes/helper.rb, line 55 def scorable?(name) has_cookie_for(name) && !marked_as_scored?(name) end
trackable_for(name)
click to toggle source
# File lib/fabes/helper.rb, line 47 def trackable_for(name) !has_cookie_for(name) && !marked_as_scored?(name) end
tracking()
click to toggle source
# File lib/fabes/helper.rb, line 34 def tracking session[:fabes] ||= {} end