Class: Rubaidh::GoogleAnalytics
- Inherits:
-
Object
- Object
- Rubaidh::GoogleAnalytics
- Defined in:
- lib/rubaidh/google_analytics.rb
Overview
The core functionality to connect a Rails application to a Google Analytics installation.
The GoogleAnalytics
class has a variety of class attributes for configuration:
-
tracker_id (required)
Specify the Google Analytics ID for this web site. This can be found as the value of _getTracker
if you are using the new (ga.js) tracking code, or the value of _uacct
if you are using the old (urchin.js) tracking code.
-
domain_name
Specify a different domain name from the default. You’ll want to use this if you have several subdomains that you want to combine into one report. See the Google Analytics documentation for more information.
-
legacy_mode
Specify whether the legacy Google Analytics code should be used. By default, the new Google Analytics code is used.
-
analytics_url
I can’t see why you’d want to do this, but you can always change the analytics URL. This is only applicable in legacy mode.
-
analytics_ssl_url
I can’t see why you’d want to do this, but you can always change the analytics URL (ssl version). This is only applicable in legacy mode.
-
environments
The environments in which to enable the Google Analytics code. Defaults to ‘production’ only. Supply an array of environment names to change this.
-
formats
The formats for which to add. Defaults to :html
only. Supply an array of formats to change this.
-
defer_load
Set this to true (the default) if you want to load the Analytics javascript at the bottom of page. Set this to false if you want to load the Analytics javascript at the top of the page. The page will render faster if you set this to true, but that will break the linking functions in Rubaidh::GoogleAnalyticsViewHelper.
-
local_javascript
Set this to true to use a local copy of the ga.js (or urchin.js) file. This gives you the added benefit of serving the JS directly from your server, which in case of a big geographical difference between your server and Google’s can speed things up for your visitors. Use the ‘google_analytics:update’ rake task to update the local JS copies.
-
override_domain_name
Set this to override the initialized domain name for a single render. Useful when you’re serving to multiple hosts from a single codebase. Typically you’d set up a before filter in the appropriate controller:
before_filter :override_domain_name
def override_domain_name
Rubaidh::GoogleAnalytics.override_domain_name = 'foo.com'
end
-
override_tracker_id
Set this to override the initialized tracker ID for a single render. Useful when you’re serving to multiple hosts from a single codebase. Typically you’d set up a before filter in the appropriate controller:
before_filter :override_tracker_id
def override_tracker_id
Rubaidh::GoogleAnalytics.override_tracker_id = 'UA-123456-7'
end
-
override_trackpageview
Set this to override the automatically generated path to the page in the Google Analytics reports for a single render. Typically you’d set this up on a controller-by-controller basis:
def show
Rubaidh::GoogleAnalytics.override_trackpageview = "path_to_report"
...
Constant Summary collapse
- @@tracker_id =
nil
- @@domain_name =
nil
- @@legacy_mode =
false
- @@analytics_url =
'http://www.google-analytics.com/urchin.js'
- @@analytics_ssl_url =
'https://ssl.google-analytics.com/urchin.js'
- @@environments =
['production']
- @@formats =
[:html]
- @@defer_load =
true
- @@local_javascript =
false
Class Method Summary collapse
-
.enabled?(format) ⇒ Boolean
Return true if the Google Analytics system is enabled and configured correctly for the specified format.
-
.google_analytics_code(ssl = false) ⇒ Object
Construct the javascript code to be inserted on the calling page.
-
.legacy_analytics_js_url(ssl = false) ⇒ Object
Generate the correct URL for the legacy Analytics JS file.
-
.legacy_google_analytics_code(ssl = false) ⇒ Object
Construct the legacy version of the Google Analytics code.
-
.request_tracked_path ⇒ Object
Determine the path to report for this request.
-
.request_tracker_id ⇒ Object
Determine the tracker ID for this request.
Class Method Details
.enabled?(format) ⇒ Boolean
Return true if the Google Analytics system is enabled and configured correctly for the specified format
144 145 146 147 |
# File 'lib/rubaidh/google_analytics.rb', line 144 def self.enabled?(format) raise Rubaidh::GoogleAnalyticsConfigurationError if tracker_id.blank? || analytics_url.blank? environments.include?(RAILS_ENV) && formats.include?(format.to_sym) end |
.google_analytics_code(ssl = false) ⇒ Object
Construct the javascript code to be inserted on the calling page. The ssl
parameter can be used to force the SSL version of the code in legacy mode only.
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
# File 'lib/rubaidh/google_analytics.rb', line 151 def self.google_analytics_code(ssl = false) return legacy_google_analytics_code(ssl) if legacy_mode extra_code = domain_name.blank? ? nil : "pageTracker._setDomainName(\"#{domain_name}\");" if !override_domain_name.blank? extra_code = "pageTracker._setDomainName(\"#{override_domain_name}\");" self.override_domain_name = nil end code = if local_javascript <<-HTML <script src="#{LocalAssetTagHelper.new.javascript_path( 'ga.js' )}" type="text/javascript"> </script> HTML else <<-HTML <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> HTML end code << <<-HTML <script type="text/javascript"> <!--//--><![CDATA[//><!-- var pageTracker = _gat._getTracker('#{request_tracker_id}'); #{extra_code} pageTracker._initData(); pageTracker._trackPageview(#{request_tracked_path}); //--><!]]> </script> HTML end |
.legacy_analytics_js_url(ssl = false) ⇒ Object
Generate the correct URL for the legacy Analytics JS file
209 210 211 212 213 214 215 |
# File 'lib/rubaidh/google_analytics.rb', line 209 def self.legacy_analytics_js_url(ssl = false) if local_javascript LocalAssetTagHelper.new.javascript_path( 'urchin.js' ) else ssl ? analytics_ssl_url : analytics_url end end |
.legacy_google_analytics_code(ssl = false) ⇒ Object
Construct the legacy version of the Google Analytics code. The ssl
parameter specifies whether or not to return the SSL version of the code.
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
# File 'lib/rubaidh/google_analytics.rb', line 188 def self.legacy_google_analytics_code(ssl = false) extra_code = domain_name.blank? ? nil : "_udn = \"#{domain_name}\";" if !override_domain_name.blank? extra_code = "_udn = \"#{override_domain_name}\";" self.override_domain_name = nil end url = legacy_analytics_js_url(ssl) code = <<-HTML <script src="#{url}" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "#{request_tracker_id}"; #{extra_code} urchinTracker(#{request_tracked_path}); </script> HTML end |
.request_tracked_path ⇒ Object
Determine the path to report for this request
225 226 227 228 229 |
# File 'lib/rubaidh/google_analytics.rb', line 225 def self.request_tracked_path use_tracked_path = override_trackpageview.blank? ? '' : "'#{override_trackpageview}'" self.override_trackpageview = nil use_tracked_path end |
.request_tracker_id ⇒ Object
Determine the tracker ID for this request
218 219 220 221 222 |
# File 'lib/rubaidh/google_analytics.rb', line 218 def self.request_tracker_id use_tracker_id = override_tracker_id.blank? ? tracker_id : override_tracker_id self.override_tracker_id = nil use_tracker_id end |