diff --git a/lib/semantic/dev_loader.rb b/lib/semantic/dev_loader.rb index 5921147..d49e152 100644 --- a/lib/semantic/dev_loader.rb +++ b/lib/semantic/dev_loader.rb @@ -5,6 +5,7 @@ module Semantic @session_key = session_key RailsSemanticLogger::ActionController::LogSubscriber.logger.level = :fatal # useful for remanent Rack::Log started + once_and_reload do Semantic::NotificationUtil.clear_subscribers(/\.action_controller$/) Semantic::NotificationUtil.clear_subscribers(/\.action_view$/) @@ -12,6 +13,7 @@ module Semantic append_ansi_formatter reset_subscribers register_action_controller + register_action_view end end @@ -31,19 +33,26 @@ module Semantic end def register_action_controller - @log_subscriber = Semantic::Subscribers::ActionController.new(@session_key) - register_action_controller_hook(:start_processing) - register_action_controller_hook(:process_action, :finish_processing) - register_action_controller_hook(:redirect_to) + sub_instance = Semantic::Subscribers::ActionController.new(@session_key) + register_hook(sub_instance, :start_processing) + register_hook(sub_instance, :process_action, :finish_processing) + register_hook(sub_instance, :redirect_to) %i[send_file send_data halted_callback unpermitted_parameters send_stream write_fragment read_fragment expire_fragment exist_fragment?].each do |hook| - register_action_controller_hook(hook, :any_hook) + register_hook(sub_instance, hook, :any_hook) + end + end + + def register_action_view + sub_instance = Semantic::Subscribers::ActionView.new + %i[render_template render_partial render_collection render_layout].each do |hook| + register_hook(sub_instance, hook) end end - def register_action_controller_hook(hook, method = hook) - @subscribers << ActiveSupport::Notifications.subscribe("#{hook}.action_controller") do |event| - @log_subscriber.send(method, event) + def register_hook(sub_instance, hook, method = hook) + @subscribers << ActiveSupport::Notifications.subscribe("#{hook}.#{sub_instance.event_group}") do |event| + sub_instance.send(method, event) end end diff --git a/lib/semantic/subscribers/action_controller.rb b/lib/semantic/subscribers/action_controller.rb index 3f0a5ae..5a4f8d5 100644 --- a/lib/semantic/subscribers/action_controller.rb +++ b/lib/semantic/subscribers/action_controller.rb @@ -1,22 +1,16 @@ module Semantic module Subscribers - class ActionController < ActiveSupport::LogSubscriber + class ActionController < LogSubscriber include AnsiColors INTERNAL_PARAMS = %i[controller action format _method only_path].freeze DEFAULT_DEV_HOSTS = ['127.0.0.1', 'localhost'].freeze TERMINUS_STRING = '╙─╜'.freeze - attr_reader :logger - def initialize(session_key) @session_key = session_key @transactions = {} - - short_name = self.class.to_s.split('::').last - @logger = SemanticLogger[short_name] - - super() + super(:action_controller) end def start_processing(event) @@ -91,20 +85,11 @@ module Semantic end def redirect_to(event) - SemanticLogger.tagged(@transactions[event.transaction_id]) do - location = capture_path(event.payload[:location]) - logger.debug("Redirected to #{colorize(location, BOLD)}") - end + location = capture_path(event.payload[:location]) + logger.debug("Redirected to #{colorize(location, BOLD)}") @previously_redirect = true end - def any_hook(event) - SemanticLogger.tagged(@transactions[event.transaction_id]) do - logger.warn("action_controller hook=<#{event.name.split('.')[0]}> needs a proper message handling!", - event.payload.keys) - end - end - private def redirect_regex diff --git a/lib/semantic/subscribers/action_view.rb b/lib/semantic/subscribers/action_view.rb index 4713b6d..36b4e9a 100644 --- a/lib/semantic/subscribers/action_view.rb +++ b/lib/semantic/subscribers/action_view.rb @@ -1,18 +1,28 @@ module Semantic module Subscribers - class ActionView < ActiveSupport::LogSubscriber + class ActionView < LogSubscriber include AnsiColors attr_reader :logger def initialize - short_name = self.class.to_s.split('::').last - @logger = SemanticLogger[short_name] - super + super(:action_view) end def render_partial(event) - logger.info('Rendered partial', event) + # logger.info('Rendered partial') + end + + def render_template(event) + logger.debug('Rendered template') + end + + def render_collection(event) + logger.debug('Rendered collection') + end + + def render_layout(event) + logger.debug('Rendered layout') end end end diff --git a/lib/semantic/subscribers/log_subscriber.rb b/lib/semantic/subscribers/log_subscriber.rb new file mode 100644 index 0000000..f407ca3 --- /dev/null +++ b/lib/semantic/subscribers/log_subscriber.rb @@ -0,0 +1,18 @@ +module Semantic + module Subscribers + class LogSubscriber + attr_reader :logger, :event_group + + def initialize(event_group) + @event_group = event_group + @logger = SemanticLogger[event_group.to_s] + end + + def any_hook(event) + logger.warn( + "#{@event_group} hook=<#{event.name.split('.')[0]}> needs a proper message handling!", event.payload.keys + ) + end + end + end +end