From af36b1975c246a9fe251079277a35241a8c9f3d9 Mon Sep 17 00:00:00 2001 From: FunnyQ Date: Mon, 17 Jun 2019 17:27:28 +0800 Subject: [PATCH 1/2] :sparkles: allow `name` for tracker options --- lib/rack/tracker/google_analytics/google_analytics.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rack/tracker/google_analytics/google_analytics.rb b/lib/rack/tracker/google_analytics/google_analytics.rb index a18d1e0..259ba88 100644 --- a/lib/rack/tracker/google_analytics/google_analytics.rb +++ b/lib/rack/tracker/google_analytics/google_analytics.rb @@ -1,6 +1,6 @@ class Rack::Tracker::GoogleAnalytics < Rack::Tracker::Handler - self.allowed_tracker_options = [:cookie_domain, :user_id] + self.allowed_tracker_options = [:cookie_domain, :user_id, :name] class Send < OpenStruct def initialize(attrs = {}) From 6505df7950793adda780eaec944847e2dc9a15c1 Mon Sep 17 00:00:00 2001 From: FunnyQ Date: Mon, 17 Jun 2019 17:38:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?move=20`ga('create'...`=20out=20of=20ga=20t?= =?UTF-8?q?ype=20check=20block-=20if=20variable=20`ga`=20is=20defined=20by?= =?UTF-8?q?=20others=20(e.g.=20GTM)=EF=BC=8Ccreate=20event=20will=20not=20?= =?UTF-8?q?fire=20if=20`ga('create',=20'<%=3D=20tracker=20%>',=20<%=3D=20t?= =?UTF-8?q?racker=5Foptions.to=5Fjson=20%>)`=20was=20in=20ga=20type=20chec?= =?UTF-8?q?k=20block.-=20use=20`ga.getByName`=20method=20to=20check=20if?= =?UTF-8?q?=20tracker=20is=20created=20already.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../google_analytics/template/google_analytics.erb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/rack/tracker/google_analytics/template/google_analytics.erb b/lib/rack/tracker/google_analytics/template/google_analytics.erb index 000ff7c..ed47e73 100644 --- a/lib/rack/tracker/google_analytics/template/google_analytics.erb +++ b/lib/rack/tracker/google_analytics/template/google_analytics.erb @@ -5,9 +5,13 @@ (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', '<%= tracker %>', <%= tracker_options.to_json %>); } + + ga(function() { + if (!ga.getByName('<%= tracker_options[:name] || 't0' %>')) { + ga('create', '<%= tracker %>', <%= tracker_options.to_json %>); + } + }); <% if options[:enhanced_link_attribution] %> ga('require', 'linkid', 'linkid.js'); <% end %>