今回開発し、リリース間近のWebサービスでデータ収集するために、Googleアナリティスクスを導入したのでその方法を紹介します。
google-analytics-railsというgemがありそちらを使う方法もあるのですが、githubで見てみると2017年の10月あたりで更新が止まっており(一応先月にReadmeは更新されてた)、不安だったので今回はgem無しで導入しました。
【前提条件】
・Googleアナリティクスに登録していること。(登録方法はこちら)
#導入方法
Googleアナリティクス用の部分テンプレートを用意し、headタグで読み込むだけです。
%script{async: "", src: "https://www.googletagmanager.com/gtag/js?id=トラッキングID"}
:javascript
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'トラッキングID');
if (#{raw current_user.to_json}) {
gtag('set', {'user_id': #{raw current_user.to_json}.id});
}
!!!
%html
%head
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
- if Rails.env.production?
= render 'layouts/google_analytics'
ここでポイントになるのが、最後のif 文で、これはログインしている場合はcurrent_userをjsonに変換してデータを渡して上げているという点です。
また、エスケープ処理を回避させるためにActionView::Helpers::OutputSafetyHelper
のrawメソッドを使っています。html_safeでも同じことができますが、nilだった場合に例外が発生してしまうのでrawメソッドが推奨されているようです。(Railsガイドを見てみると、To insert something verbatim use the raw helper rather tha calling html_safe:
とあります。)
参考
最後まで読んでいただきありがとうございます!
日々学んだことをアウトプットしてます!何かのお役に立てれば幸いです。ご指摘などあればコメントいただけますと幸いです。