class Blackbeard::Context

Attributes

controller[R]
user[R]

Public Class Methods

new(pirate, user, controller = nil) click to toggle source
# File lib/blackbeard/context.rb, line 8
def initialize(pirate, user, controller = nil)
  # TODO: remove pirate. access cache via separate cache class
  @pirate = pirate
  @controller = controller
  @user = user

  if (@user == false) || (@user && guest_method && @user.send(guest_method) == false)
    @user = nil
  end
end

Public Instance Methods

ab_test(id, options = nil) click to toggle source
# File lib/blackbeard/context.rb, line 29
def ab_test(id, options = nil)
  test = @pirate.test(id.to_s)
  if options.is_a? Hash
    test.add_variations(options.keys)
    variation = test.select_variation
    options[variation.to_sym]
  else
    variation = test.select_variation
    SelectedVariation.new(test, variation)
  end
end
add_to_cohort(id, timestamp = nil, force = false) click to toggle source
# File lib/blackbeard/context.rb, line 41
def add_to_cohort(id, timestamp = nil, force = false)
  @pirate.cohort(id.to_s).add(self, timestamp, force)
end
add_to_cohort!(id, timestamp = nil) click to toggle source
# File lib/blackbeard/context.rb, line 45
def add_to_cohort!(id, timestamp = nil)
  add_to_cohort(id, timestamp, true)
end
add_total(id, amount = 1) click to toggle source
# File lib/blackbeard/context.rb, line 19
def add_total(id, amount = 1)
  @pirate.metric(:total, id.to_s).add(self, amount)
  self
end
add_unique(id) click to toggle source
# File lib/blackbeard/context.rb, line 24
def add_unique(id)
  @pirate.metric(:unique, id.to_s).add(self, 1)
  self
end
feature_active?(id) click to toggle source
# File lib/blackbeard/context.rb, line 49
def feature_active?(id)
  @pirate.feature(id.to_s).reload.active_for?(self)
end
unique_identifier() click to toggle source
# File lib/blackbeard/context.rb, line 53
def unique_identifier
  @unique_identifier ||= @user.nil? ? "b#{visitor_id}" : "a#{@user.id}"
end
user_id() click to toggle source
# File lib/blackbeard/context.rb, line 57
def user_id
  @user.id
end
visitor_id() click to toggle source
# File lib/blackbeard/context.rb, line 61
def visitor_id
  @visitor_id ||= controller.request.cookies[:bbd] ||= generate_visitor_id
end

Private Instance Methods

generate_visitor_id() click to toggle source
# File lib/blackbeard/context.rb, line 67
def generate_visitor_id
  id = db.increment("visitor_id")
  controller.request.cookies[:bbd] = { :value => id, :expires => Time.now + 31536000 }
  id
end