Module: AB

Defined in:
lib/ab.rb,
lib/ab/test.rb,
lib/ab/interface.rb,
lib/ab/alternative.rb

Defined Under Namespace

Classes: Alternative, Test

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Class Method Details

.define(name, description, &block) ⇒ Object

Raises:

  • (ArgumentError)


3
4
5
6
7
8
9
# File 'lib/ab/interface.rb', line 3

def define(name, description, &block)
  raise ArgumentError, "#{name.inspect} is already an AB test" if tests.has_key?(name)
  t = AB::Test.new(name, description)
  t.instance_eval(&block) if block_given?
  t.verify_percentages
  tests[name] = t
end

.get(name) ⇒ Object



11
12
13
# File 'lib/ab/interface.rb', line 11

def get(name)
  tests[name]
end

.redisObject



14
15
16
# File 'lib/ab.rb', line 14

def self.redis
  @redis ||= Redis.new
end

.redis=(redis) ⇒ Object



10
11
12
# File 'lib/ab.rb', line 10

def self.redis=(redis)
  @redis = redis
end

.test(name, identity) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/ab/interface.rb', line 25

def test(name, identity)
  test = get(name)
  alternative = test.get_alternative(identity)
  begin
    alternative.view!(identity)
  rescue Timeout::Error
    # Don't track data if redis is down
  end
  alternative.value
end

.track(name, identity) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/ab/interface.rb', line 15

def track(name, identity)
  test = get(name)
  alternative = test.get_alternative(identity)
  begin
    alternative.track_conversion!(identity)
  rescue Timeout::Error
    # Don't track data if redis is down
  end
end