Sha256: ff9239d23f65b052bf3d6dd79d856fe7c5b5a151c7fdcd4edfa0180ca72f9b18
Contents?: true
Size: 852 Bytes
Versions: 4
Compression:
Stored size: 852 Bytes
Contents
require 'active_record_stats' module ActiveRecordStats class SidekiqServerMiddleware def call(worker, job, queue) totals = {} gather_sql = ->(_name, _started_at, _finished_at, _unique_id, payload) { return if payload[:name] == 'SCHEMA' || payload[:sql].blank? return unless type = ActiveRecordStats.statement_type(payload[:sql]) totals[type] ||= 0 totals[type] += 1 } sub = ActiveSupport::Notifications.subscribe('sql.active_record', &gather_sql) yield ensure ActiveSupport::Notifications.unsubscribe(sub) emit(worker.class.to_s, totals.dup) end private def emit(worker_name, totals) job = worker_name.underscore.gsub('/', '__') totals.each do |verb, count| StatsD.gauge "db.job.#{job}.#{verb}", count end end end end
Version data entries
4 entries across 4 versions & 1 rubygems