Browse Source

Matomo integration

master
aeris 1 month ago
parent
commit
eb566740ef
7 changed files with 83 additions and 16 deletions
  1. +22
    -0
      app/assets/javascripts/matomo.js
  2. +24
    -0
      app/lib/matomo.rb
  3. +4
    -0
      app/views/application/_matomo.erb
  4. +7
    -5
      app/views/layouts/application.html.erb
  5. +1
    -1
      config/environments/production.rb
  6. +1
    -0
      config/initializers/matomo.rb
  7. +24
    -10
      config/puma.rb

+ 22
- 0
app/assets/javascripts/matomo.js View File

@@ -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
- 0
app/lib/matomo.rb View File

@@ -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
- 0
app/views/application/_matomo.erb View File

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


+ 7
- 5
app/views/layouts/application.html.erb View File

@@ -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 %>

+ 1
- 1
config/environments/production.rb View File

@@ -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
- 0
config/initializers/matomo.rb View File

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

+ 24
- 10
config/puma.rb View File

@@ -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