Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

72 lines (66 sloc) 1.904 kb
module Vanity
# Helper methods available on Object.
#
# @example From ERB template
# <%= ab_test(:greeting) %> <%= current_user.name %>
# @example From Rails controller
# class AccountController < ApplicationController
# def create
# track! :signup
# Acccount.create! params[:account]
# end
# end
# @example From ActiveRecord
# class Posts < ActiveRecord::Base
# after_create do |post|
# track! :images if post.type == :image
# end
# end
module Helpers
# This method returns one of the alternative values in the named A/B test.
#
# @example A/B two alternatives for a page
# def index
# if ab_test(:new_page) # true/false test
# render action: "new_page"
# else
# render action: "index"
# end
# end
# @example Similar, alternative value is page name
# def index
# render action: ab_test(:new_page)
# end
# @since 1.2.0
def ab_test(name, &block)
if Vanity.playground.using_js?
@_vanity_experiments ||= {}
@_vanity_experiments[name] ||= Vanity.playground.experiment(name).choose
value = @_vanity_experiments[name].value
else
value = Vanity.playground.experiment(name).choose.value
end
if block
content = capture(value, &block)
block_called_from_erb?(block) ? concat(content) : content
else
value
end
end
# Check whether the specified experiment has had a value chosen yet
def ab_test_chosen?(id)
Vanity.playground.experiment(id).chosen?
end
# Tracks an action associated with a metric.
#
# @example
# track! :invitation
# @since 1.2.0
def track!(name, count = 1)
Vanity.playground.track! name, count
end
end
end
Object.class_eval do
include Vanity::Helpers
end
Jump to Line
Something went wrong with that request. Please try again.