Class: Rack::Tracker::GoogleAnalytics

Inherits:
Handler
  • Object
show all
Defined in:
lib/rack/tracker/google_analytics/google_analytics.rb

Defined Under Namespace

Classes: Ecommerce, EnhancedEcommerce, Parameter, Send

Constant Summary collapse

ALLOWED_TRACKER_OPTIONS =
[:cookie_domain, :user_id]

Constants included from JavaScriptHelper

JavaScriptHelper::JS_ESCAPE_MAP

Instance Attribute Summary

Attributes inherited from Handler

#env, #options

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Handler

#events, #initialize

Methods included from JavaScriptHelper

#escape_javascript

Constructor Details

This class inherits a constructor from Rack::Tracker::Handler

Class Method Details

.track(name, *event) ⇒ Object



82
83
84
# File 'lib/rack/tracker/google_analytics/google_analytics.rb', line 82

def self.track(name, *event)
  { name.to_s => [event.last.merge('class_name' => event.first.to_s.classify)] }
end

Instance Method Details

#ecommerce_eventsObject



74
75
76
# File 'lib/rack/tracker/google_analytics/google_analytics.rb', line 74

def ecommerce_events
  events.select {|e| e.kind_of?(Ecommerce) }
end

#enhanced_ecommerce_eventsObject



78
79
80
# File 'lib/rack/tracker/google_analytics/google_analytics.rb', line 78

def enhanced_ecommerce_events
  events.select {|e| e.kind_of?(EnhancedEcommerce) }
end

#renderObject



70
71
72
# File 'lib/rack/tracker/google_analytics/google_analytics.rb', line 70

def render
  Tilt.new( File.join( File.dirname(__FILE__), 'template', 'google_analytics.erb') ).render(self)
end

#trackerObject



56
57
58
# File 'lib/rack/tracker/google_analytics/google_analytics.rb', line 56

def tracker
  options[:tracker].respond_to?(:call) ? options[:tracker].call(env) : options[:tracker]
end

#tracker_optionsObject



60
61
62
63
64
65
66
67
68
# File 'lib/rack/tracker/google_analytics/google_analytics.rb', line 60

def tracker_options
  @tracker_options ||= {}.tap do |tracker_options|
    options.slice(*ALLOWED_TRACKER_OPTIONS).each do |key, value|
      if option_value = value.respond_to?(:call) ? value.call(env) : value
        tracker_options[key.to_s.camelize(:lower).to_sym] = option_value.to_s
      end
    end
  end
end