From 2190d23ca9c11d9c147381f407fe7335f4ef120c Mon Sep 17 00:00:00 2001 From: pvincent Date: Tue, 17 Sep 2024 08:08:07 +0400 Subject: [PATCH] fix monkey_patches --- config/initializers/monkey_patches.rb | 15 ++++-- config/initializers/semantic_logger.rb | 1 + .../middleware/debug_exceptions.rb | 51 +++++++++---------- lib/monkey_patches/monkey_patcher.rb | 17 ------- .../rails_live_reload/watcher.rb | 2 +- 5 files changed, 38 insertions(+), 48 deletions(-) delete mode 100644 lib/monkey_patches/monkey_patcher.rb diff --git a/config/initializers/monkey_patches.rb b/config/initializers/monkey_patches.rb index 638d02e..a8cce15 100644 --- a/config/initializers/monkey_patches.rb +++ b/config/initializers/monkey_patches.rb @@ -1,12 +1,19 @@ return unless Rails.application.server? || Rails.application.console? -require_relative '../../lib/monkey_patches/monkey_patcher' - -MonkeyPatcher.run do |patch| +def grant(patch) case patch when 'action_dispatch/middleware/debug_exceptions.rb' then Rails.application.server? when 'rails_live_reload/watcher.rb' then Rails.application.server? && Rails.env.development? when /^semantic/ then true - else false end end + +puts 'MonkeyPatcher runs:' +patches = Dir.glob(Rails.root.join('lib', 'monkey_patches', '**', '*.rb')) +patches.each do |file| + patch = Pathname.new(file).relative_path_from(Rails.root.join('lib', 'monkey_patches')).to_s + next unless grant patch + + puts "🐵 patching... #{patch}" + require file +end diff --git a/config/initializers/semantic_logger.rb b/config/initializers/semantic_logger.rb index d2c3102..6ccc875 100644 --- a/config/initializers/semantic_logger.rb +++ b/config/initializers/semantic_logger.rb @@ -9,6 +9,7 @@ Rails.autoloaders.main.on_load('ApplicationController') do end Rails.configuration.after_initialize do + Rails.logger.name = 'error_trap' Semantic::InstrumentationManager.clear bootstrap = [{ kind: :restored, constant: 'ACTION_VIEW', type: :boolean, old_value: false, new_value: true }, diff --git a/lib/monkey_patches/action_dispatch/middleware/debug_exceptions.rb b/lib/monkey_patches/action_dispatch/middleware/debug_exceptions.rb index 431944c..b4d1bd1 100644 --- a/lib/monkey_patches/action_dispatch/middleware/debug_exceptions.rb +++ b/lib/monkey_patches/action_dispatch/middleware/debug_exceptions.rb @@ -3,35 +3,34 @@ require 'action_dispatch/routing/inspector' require 'action_view' module ActionDispatch - module Middleware - # THIS IS A HACK TO unwrap TagWrapError when detected! - # TagWrapError contains a 'tag' for SemanticLogger and the cause itself - class DebugExceptions - private + # THIS IS A HACK TO unwrap TagWrapError when detected! + # TagWrapError contains a 'tag' for SemanticLogger and the cause itself + class DebugExceptions + private - def render_exception(request, exception, wrapper) - ## PVINCENT's ADDITION for TagWrapError - log_error(request, wrapper) - if exception.is_a?(Semantic::TagWrapError) - backtrace_cleaner = request.get_header('action_dispatch.backtrace_cleaner') - wrapper = ExceptionWrapper.new(backtrace_cleaner, exception.error) - end - ## HERE it was commented off - # log_error(request, wrapper) - ## END OF ADDITION + def render_exception(request, exception, wrapper) + ## PVINCENT's ADDITION for TagWrapError - raise exception unless request.get_header('action_dispatch.show_detailed_exceptions') + log_error(request, wrapper) + if exception.is_a?(Semantic::TagWrapError) + backtrace_cleaner = request.get_header('action_dispatch.backtrace_cleaner') + wrapper = ExceptionWrapper.new(backtrace_cleaner, exception.error) + end + ## HERE it was commented off + # log_error(request, wrapper) + ## END OF ADDITION + + raise exception unless request.get_header('action_dispatch.show_detailed_exceptions') - begin - content_type = request.formats.first - rescue ActionDispatch::Http::MimeNegotiation::InvalidType - content_type = Mime[:text] - end - if api_request?(content_type) - render_for_api_request(content_type, wrapper) - else - render_for_browser_request(request, wrapper) - end + begin + content_type = request.formats.first + rescue ActionDispatch::Http::MimeNegotiation::InvalidType + content_type = Mime[:text] + end + if api_request?(content_type) + render_for_api_request(content_type, wrapper) + else + render_for_browser_request(request, wrapper) end end end diff --git a/lib/monkey_patches/monkey_patcher.rb b/lib/monkey_patches/monkey_patcher.rb deleted file mode 100644 index 9c304be..0000000 --- a/lib/monkey_patches/monkey_patcher.rb +++ /dev/null @@ -1,17 +0,0 @@ -class MonkeyPatcher - class << self - MONKEY_PATCHES = Rails.root.join('lib', 'monkey_patches') - def run(&) - patches = Dir.glob(MONKEY_PATCHES.join('**', '*.rb')) - patches.each do |patch| - file = Pathname.new(patch).relative_path_from(MONKEY_PATCHES).to_s - next if file == 'monkey_patcher.rb' # filter off its own file! - - if !block_given? || yield(file) - puts "🐵 patching... #{file}" - require file - end - end - end - end -end diff --git a/lib/monkey_patches/rails_live_reload/watcher.rb b/lib/monkey_patches/rails_live_reload/watcher.rb index 7e1a17f..12ea551 100644 --- a/lib/monkey_patches/rails_live_reload/watcher.rb +++ b/lib/monkey_patches/rails_live_reload/watcher.rb @@ -5,7 +5,7 @@ module RailsLiveReload @files = {} @sockets = [] - # puts "Watching: #{root}" + # puts "Watching AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA: #{root}" # RailsLiveReload.patterns.each do |pattern, rule| # puts " #{pattern} => #{rule}" # end