Sha256: 53acf3776259c0647c873649b652d37388576ff3ed2e549eb5a6408778ba065c

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

require "request_store"

module Ahoy
  module Controller
    def self.included(base)
      if base.respond_to?(:helper_method)
        base.helper_method :current_visit
        base.helper_method :ahoy
      end
      if base.respond_to?(:before_action)
        base.before_action :set_ahoy_cookies, unless: -> { Ahoy.api_only }
        base.before_action :track_ahoy_visit, unless: -> { Ahoy.api_only }
        base.before_action :set_ahoy_request_store
      else
        base.before_filter :set_ahoy_cookies, unless: -> { Ahoy.api_only }
        base.before_filter :track_ahoy_visit, unless: -> { Ahoy.api_only }
        base.before_filter :set_ahoy_request_store
      end
    end

    def ahoy
      @ahoy ||= Ahoy::Tracker.new(controller: self)
    end

    def current_visit
      ahoy.visit
    end

    def set_ahoy_cookies
      ahoy.set_visitor_cookie
      ahoy.set_visit_cookie
    end

    def track_ahoy_visit
      if ahoy.new_visit?
        ahoy.track_visit(defer: !Ahoy.track_visits_immediately)
      end
    end

    def set_ahoy_request_store
      RequestStore.store[:ahoy] ||= ahoy
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ahoy_matey-1.6.1 lib/ahoy/controller.rb
ahoy_matey-1.6.0 lib/ahoy/controller.rb
ahoy_matey-1.5.5 lib/ahoy/controller.rb