2016-02-26 14 views
5

4.2 uygulamasını mı Rails için Google Analytics ekleme. Ancak, Google Analytics herhangi bir oturum almıyor.ben Heroku ile dağıtılan ettik ve bunu Google Analytics ekleyerek denedim Rails 4.2 uygulamasını edindikten

herhangi bir öneriniz neden ve bu nasıl çözmek için?

KOD

/app/layouts/_footer.html.erb:

<% if Rails.env.production? %> 
    <script> 
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 

    ga('create', 'UA-XXXXXXXX-X', 'herokuapp.com'); 
    ga('send', 'pageview'); 

    </script> 
<% end %> 

/app/layouts/application.html.erb:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Title</title> 
<%= Gon::Base.render_data({}) %> 
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
    <%= csrf_meta_tags %> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
</head> 
<body> 

<div class="container"> 
    <%= yield %> 
</div> 

<%= render 'layouts/footer' %> 

</body> 
</html> 

/app/varlıklar/javascripts/analytics.js.coffee:

$(document).on 'page:change', -> 
if window._gaq? 
    _gaq.push ['_trackPageview'] 
else if window.pageTracker? 
    pageTracker._trackPageview() 

/app/assets/javascripts/application.js:

//= require jquery 
//= require analytics 
//= require bootstrap 
//= require jquery_ujs 
//= require jquery.ui.all 
//= require Chart 
//= require jquery.turbolinks 
//= require lodash 
//= require_tree . 

Gemfile: Bu Turbolinks nedeniyle çalışmaz çünkü

source 'https://rubygems.org' 

gem 'rails',    '4.2.2' 
gem 'bootstrap-sass',  '3.2.0.0' 
gem 'sass-rails',   '5.0.2' 
gem 'uglifier',    '2.5.3' 
gem 'coffee-rails',   '4.1.0' 
gem 'jquery-rails',   '4.0.3' 
gem 'jquery-ui-rails', '~> 4.2.1' 
gem 'turbolinks',   '2.3.0' 
gem 'jquery-turbolinks' 
gem 'jbuilder',    '2.2.3' 
gem 'sdoc',     '0.4.0', group: :doc 
gem 'chart-js-rails' 
gem 'gon' 
gem 'lodash-rails' 

group :development, :test do 
    gem 'sqlite3',  '1.3.9' 
    gem 'byebug',  '3.4.0' 
    gem 'web-console', '2.0.0.beta3' 
    gem 'spring',  '1.1.3' 
end 

group :production do 
    gem 'pg',    '0.17.1' 
    gem 'rails_12factor', '0.0.2' 
end 
+0

Sadece bildiğiniz gibi, bu soruda Google Analytics web izleme kitaplıklarının iki farklı sürümünü karıştırıyorsunuz. senin 'kullandığınız _footer.html.erb' [analytics.js izleme pasajı] In (https://developers.google.com/analytics/devguides/collection/analyticsjs/), ancak' analytics.js'de. Eğer miras kullandığınız coffee' dosya ga.js kütüphane, sen yüklenen analytics.js yüklenen çünkü hiç bir şey yapmayacağım kodu, ga.js. –

cevap

7

Eğer komut dosyası ekliyorsanız yol, yanlış yoldur Bildiğiniz gibi, bu işaret parçasının Turbolinks nedeniyle tekrar yüklenmeyeceğinden, _footer'ınızda sahip olduğunuz kodun beklendiği gibi çalışmayacağını biliyorsunuz.

sana bütün raylar uygulamalar için google analytics benim özel bir uygulama verecektir. Uygulamanızın/varlıklar/javascripts ise

yeni bir dosya adı verilen google_analytics.js.coffee oluşturun ve aşağıdaki komut dosyasını ekleyin: Eğer Turbolinks için destek ekler görebileceğiniz gibi

class @GoogleAnalytics 

    @load: -> 
    # Google Analytics depends on a global _gaq array. window is the global scope. 
    window._gaq = [] 
    window._gaq.push ["_setAccount", GoogleAnalytics.analyticsId()] 

    # Create a script element and insert it in the DOM 
    ga = document.createElement("script") 
    ga.type = "text/javascript" 
    ga.async = true 
    ga.src = ((if "https:" is document.location.protocol then "https://ssl" else "http://www")) + ".google-analytics.com/ga.js" 
    firstScript = document.getElementsByTagName("script")[0] 
    firstScript.parentNode.insertBefore ga, firstScript 

    # If Turbolinks is supported, set up a callback to track pageviews on page:change. 
    # If it isn't supported, just track the pageview now. 
    if typeof Turbolinks isnt 'undefined' and Turbolinks.supported 
     document.addEventListener "page:change", (-> 
     GoogleAnalytics.trackPageview() 
    ), true 
    else 
     GoogleAnalytics.trackPageview() 

    @trackPageview: (url) -> 
    unless GoogleAnalytics.isLocalRequest() 
     if url 
     window._gaq.push ["_trackPageview", url] 
     else 
     window._gaq.push ["_trackPageview"] 
     window._gaq.push ["_trackPageLoadTime"] 

    @isLocalRequest: -> 
    GoogleAnalytics.documentDomainIncludes "local" 

    @documentDomainIncludes: (str) -> 
    document.domain.indexOf(str) isnt -1 

    @analyticsId: -> 
    # your google analytics ID(s) here... 
    'UA-xxxxxxxx-x' 

GoogleAnalytics.load() 

, bu temiz ve daha iyidir Google Analytics'i uygulamanıza eklemenin yolu. Umarım senin için çalışır.

+0

Teşekkürler. Ve '/app/assets/javascripts/application.js:' dosyasında '// = analytics gerektirir' yerine // = analytics gerektirir? – Bhav

+1

uygulamanızın değiştirilmesine gerek yoktur çünkü zaten // = require_tree. 'Dır. // // = analytics gerektirir… – SsouLlesS

+0

@SsouLlesS Harika görünüyor! Üretim ortamına sınırlamanın bir yolu var mı? – slehmann36