bellycard/napa

View on GitHub
lib/napa/active_record_extensions/notifications_subscriber.rb

Summary

Maintainability
A
0 mins
Test Coverage
if defined?(ActiveRecord)
  ActiveSupport::Notifications.subscribe 'sql.active_record' do |_name, start, finish, _id, payload|
    if payload[:sql].downcase.match(/(select|update|insert|delete)(.+)/i)
      table, action = Napa::ActiveRecordStats.extract_sql_content(payload[:sql])
    end

    if table
      Napa::Stats.emitter.timing(
        'sql.query_time',
        (finish - start) * 1000)

      Napa::Stats.emitter.timing(
        "sql.table.#{table}.#{action.downcase}.query_time",
        (finish - start) * 1000)
    end
  end
end