From 5fa7c80c3095b068596c2b5f5466db6eb26f2962 Mon Sep 17 00:00:00 2001 From: pvincent Date: Sun, 8 Sep 2024 09:44:56 +0400 Subject: [PATCH] log_subscriber --- app/controllers/scores_controller.rb | 1 + config/environments/development.rb | 1 + lib/semantic/dev_loader.rb | 13 ++++++++++++- lib/semantic/log_subscriber.rb | 7 +++++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 lib/semantic/log_subscriber.rb diff --git a/app/controllers/scores_controller.rb b/app/controllers/scores_controller.rb index 9723565..ddc07d9 100644 --- a/app/controllers/scores_controller.rb +++ b/app/controllers/scores_controller.rb @@ -5,6 +5,7 @@ class ScoresController < ApplicationController before_action :set_score, only: %i[show edit update destroy] def index + logger.info('inside controller') @q = Score.all.ransack(q_params) @pagy, @scores = pagy(@q.result) end diff --git a/config/environments/development.rb b/config/environments/development.rb index 513ecae..a795f01 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -88,6 +88,7 @@ Rails.application.configure do # rubocop:disable Metrics/BlockLength end elsif Rails.application.server? config.after_initialize do + Semantic::LogSubscriber.new # force loading Semantic::DevLoader.new end end diff --git a/lib/semantic/dev_loader.rb b/lib/semantic/dev_loader.rb index 10d5454..4fffe18 100644 --- a/lib/semantic/dev_loader.rb +++ b/lib/semantic/dev_loader.rb @@ -2,7 +2,10 @@ module Semantic # use the Zeitwerk autoloader to reattach_appender for development autoreloading feature class DevLoader def initialize - Rails.autoloaders.main.on_load('ApplicationController') { append_ansi_formatter } + Rails.autoloaders.main.on_load('ApplicationController') do + append_ansi_formatter + append_subscriber_once + end append_ansi_formatter end @@ -15,5 +18,13 @@ module Semantic formatter:, filter: ->(log) { !formatter.reject(log) }) end + + def append_subscriber_once + return unless @previous_subscribe.nil? + + @previous_subscribe = ActiveSupport::Notifications.subscribe 'start_processing.action_controller' do |event| + Semantic::LogSubscriber.new.start_processing(event) + end + end end end diff --git a/lib/semantic/log_subscriber.rb b/lib/semantic/log_subscriber.rb new file mode 100644 index 0000000..19e066c --- /dev/null +++ b/lib/semantic/log_subscriber.rb @@ -0,0 +1,7 @@ +module Semantic + class LogSubscriber < ActiveSupport::LogSubscriber + def start_processing(event) + logger.warn("MyStarted #{event.payload[:controller]} - #{event.payload[:action]}", event.payload[:request]) + end + end +end