module Ahoy::Controller

Public Class Methods

included(base) click to toggle source
# File lib/ahoy/controller.rb, line 3
def self.included(base)
  if base.respond_to?(:helper_method)
    base.helper_method :current_visit
    base.helper_method :ahoy
  end
  base.before_action :track_ahoy_visit, unless: -> { Ahoy.api_only }
  base.around_action :set_ahoy_request_store, unless: -> { Ahoy.api_only }
end

Public Instance Methods

ahoy() click to toggle source
# File lib/ahoy/controller.rb, line 12
def ahoy
  @ahoy ||= Ahoy::Tracker.new(controller: self)
end
current_visit() click to toggle source
# File lib/ahoy/controller.rb, line 16
def current_visit
  ahoy.visit
end
set_ahoy_cookies() click to toggle source
# File lib/ahoy/controller.rb, line 20
def set_ahoy_cookies
  if Ahoy.cookies?
    ahoy.set_visitor_cookie
    ahoy.set_visit_cookie
  else
    # delete cookies if exist
    ahoy.reset
  end
end
set_ahoy_request_store() { || ... } click to toggle source
# File lib/ahoy/controller.rb, line 46
def set_ahoy_request_store
  previous_value = Ahoy.instance
  begin
    Ahoy.instance = ahoy
    yield
  ensure
    Ahoy.instance = previous_value
  end
end
track_ahoy_visit() click to toggle source
# File lib/ahoy/controller.rb, line 30
def track_ahoy_visit
  defer = Ahoy.server_side_visits != true

  if defer && !Ahoy.cookies?
    # avoid calling new_visit?, which triggers a database call
  elsif !Ahoy.cookies? && ahoy.exclude?
    # avoid calling new_visit?, which triggers a database call
    # may or may not be a new visit
    Ahoy.log("Request excluded")
  elsif ahoy.new_visit?
    ahoy.track_visit(defer: defer)
  end

  set_ahoy_cookies
end