Analytics tracking setup
to run in your site's root directory
View template source
APPLICATION_LAYOUT_PATH = Rails.root.join("app/views/layouts/application.html.erb")
TEMPLATES = {
"fathom" => <<~HTML,
<script src="https://cdn.usefathom.com/script.js" data-site="FATHOM_SITE_ID" defer></script>
HTML
"google" => <<~HTML,
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'GA_MEASUREMENT_ID');
</script>
HTML
"matomo" => <<~HTML,
<script type="text/javascript">
var _paq = window._paq = window._paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//{$MATOMO_URL}/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', {$IDSITE}]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
HTML
"plausible" => <<~HTML,
<script async src="https://plausible.io/js/YOUR_PLAUSIBLE_ID.js"></script>
<script>
window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
plausible.init()
</script>
HTML
"simpleanalytics" => <<~HTML,
<script async src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
HTML
}
PROVIDERS = TEMPLATES.keys
say "Available analytics providers: #{PROVIDERS.join(", ")}"
provider = ask("Your analytics provider:").downcase.strip
abort "Invalid provider. Choose from: #{PROVIDERS.join(", ")}" unless PROVIDERS.include?(provider)
create_file "app/views/shared/_analytics.html.erb", TEMPLATES[provider]
if APPLICATION_LAYOUT_PATH.exist?
if File.read(APPLICATION_LAYOUT_PATH) =~ /<\/head>/
insert_into_file APPLICATION_LAYOUT_PATH.to_s, <<~ERB.indent(4), before: /^\s*<\/head>/
<%= render partial: "shared/analytics" %>
ERB
else
say "The <head> tag is missing in your application layout", :red
say %( Add `<%= render partial: "shared/analytics" %>` within the `<head>` of your layout.)
end
else
say "Default application.html.erb is missing!", :red
say %( Add `<%= render partial: "shared/analytics" %>` within the `<head>` of your layout.)
end
def run_bundle; end
This script adds analytics tracking into your Perron site. It creates a partial and automatically injects it into your application layout.