Browse Source

Matomo integration

master
aeris 2 years ago
parent
commit
eb566740ef
  1. 22
      app/assets/javascripts/matomo.js
  2. 24
      app/lib/matomo.rb
  3. 4
      app/views/application/_matomo.erb
  4. 12
      app/views/layouts/application.html.erb
  5. 2
      config/environments/production.rb
  6. 1
      config/initializers/matomo.rb
  7. 34
      config/puma.rb

22
app/assets/javascripts/matomo.js

@ -0,0 +1,22 @@
var _paq = window._paq || [];
document.addEventListener('DOMContentLoaded', function() {
const { matomoUrl: url, matomoSite: site } = document.documentElement.dataset
console.log(url, site);
if ( url == undefined || site == undefined ) return;
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
_paq.push(['setTrackerUrl', url]);
_paq.push(['setSiteId', site]);
const d = document,
g = d.createElement('script'),
s = d.getElementsByTagName('script')[0]
g.type = 'text/javascript'
g.async = true
g.defer = true
g.src = url
s.parentNode.insertBefore(g, s)
})

24
app/lib/matomo.rb

@ -0,0 +1,24 @@
class Matomo
module Helpers
def matomo_tag
config = Matomo
return unless config.enabled?
render partial: 'matomo', locals: { config: config }
end
end
cattr_reader :url, :path, :site
def self.load
@@url = ENV.fetch 'MATOMO_URL'
@@site = ENV.fetch 'MATOMO_SITE'
@@disabled = ENV['MATOMO_DISABLED']
end
def self.enabled?
self.url && self.site && @@disabled.nil?
end
ActionView::Base.include Helpers
self.load
end

4
app/views/application/_matomo.erb

@ -0,0 +1,4 @@
<noscript>
<img src="<%= config.url %>?idsite=<%= config.site %>&amp;rec=1" style="border:0;" alt=""/>
</noscript>

12
app/views/layouts/application.html.erb

@ -1,5 +1,6 @@
<!DOCTYPE html>
<html>
<% data = Matomo.enabled? ? { matomo_url: Matomo.url, matomo_site: Matomo.site } : {} %>
<%= content_tag :html, data: data do %>
<head>
<title>CryptCheck</title>
<%= stylesheet_link_tag 'application', media: 'all' %>
@ -8,8 +9,9 @@
<%= yield :head %>
</head>
<body>
<%= render partial: 'headers' %>
<%= render partial: 'flash' %>
<%= yield %>
<%= render partial: 'headers' %>
<%= render partial: 'flash' %>
<%= yield %>
<%= render partial: 'matomo', locals: { config: Matomo } if Matomo.enabled? %>
</body>
</html>
<% end %>

2
config/environments/production.rb

@ -25,7 +25,7 @@ Rails.application.configure do
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
# Compress JavaScripts and CSS.
config.assets.js_compressor = :uglifier
config.assets.js_compressor = Uglifier.new harmony: true
# config.assets.css_compressor = :sass
# Do not fallback to assets pipeline if a precompiled asset is missed.

1
config/initializers/matomo.rb

@ -0,0 +1 @@
require 'matomo'

34
config/puma.rb

@ -1,21 +1,35 @@
threads_count = ENV.fetch 'RAILS_MAX_THREADS', 5
threads threads_count, threads_count
threads_count = ENV['RAILS_THREADS']
if threads_count
min_threads_count = max_threads_count = threads_count
else
min_threads_count = ENV.fetch 'RAILS_MIN_THREADS', 5
max_threads_count = ENV.fetch 'RAILS_MAX_THREADS', 5
end
threads min_threads_count, max_threads_count
env = ENV.fetch 'RAILS_ENV', 'development'
environment env
workers ENV.fetch('WORKER', 4).to_i
ROOT = Dir.pwd
workers = ENV['RAILS_WORKERS']&.to_i
workers ||= 4 if env == 'production'
workers workers
bind = ENV['RAILS_LISTEN']
port = ENV['RAILS_PORT']
puts env: env
if env == 'production'
listen = ENV.fetch('LISTEN') { 'unix://' + File.join(Dir.pwd, 'tmp/sockets/puma.sock') }
port = ENV['PORT']
bind ||= 'unix://' + File.join(ROOT, 'tmp/sockets/puma.sock')
else
listen = ENV['LISTEN']
port = ENV.fetch 'PORT', 3000
bind ||= 'tcp://[::]:3000'
end
port(port) if port
bind listen if listen
puts(port: port, bind: bind)
port port if port
bind bind if bind
pidfile File.join Dir.pwd, 'tmp/pids/puma.pid'
pidfile ENV['PUMA_PID'] || File.join(ROOT, 'tmp/pids/puma.pid')
plugin :tmp_restart

Loading…
Cancel
Save