Faire fonctionner Google Analytics avec Rails 4
Comment faire en sorte que le code de suivi de Google Analytics soit chargé lors de l'ouverture d'un site basé sur Ruby on Rails ? Le point.
La plateforme Google Analytics peut être utilisée avec de nombreux langages web et différents outils de création de sites internet. C'est le cas notamment du framework Ruby on Rails.
La version 4 du framework ajoute Turbolinks, une fonctionnalité qui permet de ne charger que le contenu des pages situé entre les balises <body>. Le code de suivi de Google Analytics est normalement contenu en dehors de ces balises : il n'est donc pas chargé systématiquement, ce qui fausse les calculs de l'audience. Il existe cependant une technique pour contourner ce problème.
Pour contourner Turbolinks, il faut exécuter un code JavaScript particulier sur chaque page. Pour cela, utilisez un "asset", qui est chargé dans chaque page avant Turbolinks. Créez le fichier "app/assets/javascripts/analytics.js.coffee". Ajoutez-y le code Coffeescript ou bien JavaScript (une seule version est nécessaire) permettant de faire fonctionner le suivi Google Analytics :app/assets/javascripts/analytics.js// Code dans le langage CoffeeScript$(document).on 'page:change', ->if window._gaq? _gaq.push ['_trackPageview']else if window.pageTracker? pageTracker._trackPageview()// Code dans le langage JavaScript$(document).on('page:change', function() {if (window._gaq != null) { return _gaq.push(['_trackPageview']);} else if (window.pageTracker != null) { return pageTracker._trackPageview();}});
La deuxième partie consiste à créer un partial. Créez le partial dans le répertoire "app/views/layouts" et nommez-le "_footer.html.erb". Dans le fichier "application.html.erb", ajoutez l'instruction qui va appeler le partial :
<%= render 'layouts/footer' %>
Pour finir, ajoutez dans le partial le code de suivi de votre site internet. N'oubliez pas d'indiquer l'identifiant de suivi de votre propriété, ainsi que le nom de domaine de votre site internet :
<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-XXXXXXX-XX', 'monsite.fr'); ga('send', 'pageview');</script>