Skip to content

Commit

Permalink
Started hooking in the experiments with in coming requests.
Browse files Browse the repository at this point in the history
  • Loading branch information
Doug Youch committed Sep 9, 2010
1 parent 37ca27b commit 3de5eed
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 9 deletions.
17 changes: 13 additions & 4 deletions app/controllers/module_app_controller.rb
Expand Up @@ -121,6 +121,11 @@ def handle_page
@revision = @page.page_revisions.find_by_identifier_hash(params['__VER__'])
return display_missing_page unless @revision
return render :inline => 'Invalid version' unless @revision.revision_type == 'real' || @revision.revision_type == 'temp'
elsif @page.is_running_an_experiment?
self.log_visitor
if session[:domain_log_visitor] && session[:domain_log_visitor][:id]
@revision = @page.experiment_page_revision session[:domain_log_visitor], session[:cms_language]
end
end

engine = SiteNodeEngine.new(@page,:display => session[:cms_language], :path => path_args, :revision => @revision)
Expand All @@ -133,9 +138,7 @@ def handle_page
end

# Add a new visitor in
if Configuration.logging
@capture_location = DomainLogVisitor.log_visitor(cookies,myself,session,request)
end
self.log_visitor

# If it's a redirect, just redirect
if @output.redirect?
Expand Down Expand Up @@ -172,7 +175,13 @@ def include_stat_capture
@output.includes[:js] << "http#{'s' if request.ssl?}://www.google.com/jsapi"
@output.includes[:js] << "/javascripts/webalytics.js"
end


def log_visitor
if Configuration.logging
@capture_location = DomainLogVisitor.log_visitor(cookies,myself,session,request)
end
end

def process_logging #:nodoc:
if Configuration.logging
unless request.bot?
Expand Down
4 changes: 4 additions & 0 deletions app/models/domain_log_visitor.rb
Expand Up @@ -6,6 +6,7 @@ class DomainLogVisitor < DomainModel
before_create :generate_hash

has_many :domain_log_sessions, :order => 'domain_log_sessions.created_at DESC'
has_many :experiment_users

def last_session
self.domain_log_sessions[0]
Expand Down Expand Up @@ -55,6 +56,9 @@ def self.log_visitor(cookies,user,session,request)
else
cookies[:v] = nil
end
elsif cookies[:v] && session[:domain_log_visitor].is_a?(Integer)
div = DomainLogVisitor.find_by_id session[:domain_log_visitor]
session[:domain_log_visitor] = { :id => dlv.id, :loc => dlv.country, :end_user_id => user.id } if div
end

if !cookies[:v]
Expand Down
9 changes: 6 additions & 3 deletions app/models/experiment.rb
Expand Up @@ -126,14 +126,16 @@ def after_save
end

def get_user(domain_log_visitor, language)
user = self.experiment_users.find_by_domain_log_visitor_id_and_language(domain_log_visitor.id, language)
user.update_attribute(:end_user_id, domain_log_visitor.end_user_id) if user && user.end_user_id.nil? && domain_log_visitor.end_user_id
user = self.experiment_users.find_by_domain_log_visitor_id_and_language(domain_log_visitor[:id], language)
user.update_attribute(:end_user_id, domain_log_visitor[:end_user_id]) if user && user.end_user_id.nil? && domain_log_visitor[:end_user_id]
user
end

def get_version(domain_log_visitor, language)
return nil unless self.is_running?

domain_log_visitor = domain_log_visitor.attributes.symbolize_keys if domain_log_visitor.is_a?(DomainModel)

user = self.get_user(domain_log_visitor, language)
return user.experiment_version if user

Expand All @@ -149,7 +151,7 @@ def get_version(domain_log_visitor, language)

return nil unless version

self.experiment_users.create :experiment_version_id => version.id, :domain_log_visitor_id => domain_log_visitor.id, :language => language, :end_user_id => domain_log_visitor.end_user_id
self.experiment_users.create :experiment_version_id => version.id, :domain_log_visitor_id => domain_log_visitor[:id], :language => language, :end_user_id => domain_log_visitor[:end_user_id]
version
end

Expand All @@ -159,6 +161,7 @@ def success!(domain_log_visitor, language)
end

def self.success!(experiment_id, domain_log_visitor, language)
domain_log_visitor = domain_log_visitor.attributes.symbolize_keys if domain_log_visitor.is_a?(DomainModel)
exp = Experiment.find_by_id experiment_id
exp.success!(domain_log_visitor, language) if exp
end
Expand Down
2 changes: 1 addition & 1 deletion app/models/site_node.rb
Expand Up @@ -48,7 +48,7 @@ class SiteNode < DomainModel
expires_site

def is_running_an_experiment?
self.experiment_id && self.experiment && self.experiment.is_running?
self.experiment_id && self.experiment && self.experiment.is_running? && self.experiment.active?
end

def experiment_version(domain_log_visitor, language)
Expand Down
7 changes: 6 additions & 1 deletion lib/webiva_monkey_patches.rb
Expand Up @@ -14,10 +14,15 @@ def data
end

class Request #:nodoc:
@@bots = ["google", "bot", "yahoo", "spider", "archiver", "curl", "python", "nambu", "twitt", "perl", "sphere", "pear", "java", "wordpress", "radian", "crawl", "yandex", "eventbox", "monitor", "mechanize", "facebook", "slurp", "msnbot", "nutch", "search", "wget"]
def self.bots
@@bots
end

def bot?
return @is_bot if ! @is_bot.nil?
agent = user_agent.to_s.downcase
@is_bot = ['msnbot','yahoo! slurp','googlebot','bot','spider','crawler'].detect { |b| agent.include?(b) }
@is_bot = self.class.bots.detect { |b| agent.include?(b) } ? true : false
end
end
end
Expand Down

0 comments on commit 3de5eed

Please sign in to comment.