From 9894abbac44a3f066754c8d256eff53180d7b3f9 Mon Sep 17 00:00:00 2001 From: pvincent Date: Thu, 19 Sep 2024 22:44:29 +0400 Subject: [PATCH] active_record --- config/initializers/instrumentalizing.rb | 9 +++++--- lib/semantic/subscribers/action_view.rb | 2 -- lib/semantic/subscribers/active_record.rb | 28 +++++++++++++++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 lib/semantic/subscribers/active_record.rb diff --git a/config/initializers/instrumentalizing.rb b/config/initializers/instrumentalizing.rb index d9c8852..c73c334 100644 --- a/config/initializers/instrumentalizing.rb +++ b/config/initializers/instrumentalizing.rb @@ -8,8 +8,8 @@ return unless Rails.application.server? def build_instrumentation_config { action_controller: true, - action_view: Live::Constants::ACTION_VIEW - # active_record: Live::Constants::ACTIVE_RECORD + action_view: Live::Constants::ACTION_VIEW, + active_record: Live::Constants::ACTIVE_RECORD }.map do |key, value| key if value end.compact @@ -27,6 +27,9 @@ Rails.configuration.after_initialize do end Rails.autoloaders.main.on_load('ApplicationController') do - Rails.logger.debug 'Zeitwerk RELOAD!' + Rails.logger.info ' ', dimensions: Semantic::FancyDimensions.new(rails: '╔═╗', before: 1) + Rails.logger.fatal 'Zeitwerk RELOAD!', dimensions: Semantic::FancyDimensions.new(rails: '╠█╣') + Rails.logger.info ' ', dimensions: Semantic::FancyDimensions.new(rails: '╚═╝') + Semantic::Instrumentalizer.activate(*build_instrumentation_config) end diff --git a/lib/semantic/subscribers/action_view.rb b/lib/semantic/subscribers/action_view.rb index 4308ad4..2abae42 100644 --- a/lib/semantic/subscribers/action_view.rb +++ b/lib/semantic/subscribers/action_view.rb @@ -6,8 +6,6 @@ module Semantic REGEX_BASEDIR = %r{^#{Rails.root}/(.*)} - attr_reader :logger - def render_partial(event) identifier = pathname(event.payload[:identifier]) # logger.debug("Rendered partial #{identifier}", event.payload[:locals]) if identifier diff --git a/lib/semantic/subscribers/active_record.rb b/lib/semantic/subscribers/active_record.rb new file mode 100644 index 0000000..433083c --- /dev/null +++ b/lib/semantic/subscribers/active_record.rb @@ -0,0 +1,28 @@ +module Semantic + module Subscribers + # LogSubscriber for event_group :active_record + class ActiveRecord < LogSubscriber + include AnsiColors + + def sql(event) + name = event.payload[:name] + return if name == 'SCHEMA' + + sql = event.payload[:sql] + cached = event.payload[:cached] + row_count = event.payload[:row_count] + logger.debug("#{name}: #{sql} cached=#{cached} count=#{row_count}") + end + + def instantiation(event) + class_name = event.payload[:class_name] + record_count = event.payload[:record_count] + logger.debug("instantiate #{class_name} #{record_count} times") + end + + def strict_loading_violation(event) = any_hook event + def start_transaction(event) = any_hook event + def transaction(event) = any_hook event + end + end +end