From 98c7efab691b598aa6c2d3e74a69909131783c97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Guitaut?= Date: Tue, 27 Feb 2024 14:25:31 +0100 Subject: [PATCH] FIX: Add compatibility with Rails 7.1+ --- lib/logster/rails/railtie.rb | 56 ++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 19 deletions(-) diff --git a/lib/logster/rails/railtie.rb b/lib/logster/rails/railtie.rb index 3b88c41..d6cbde8 100644 --- a/lib/logster/rails/railtie.rb +++ b/lib/logster/rails/railtie.rb @@ -5,32 +5,39 @@ module Logster::Rails class Engine < Rails::Engine end - def self.set_logger(config) - return unless Logster.config.environments.include?(Rails.env.to_sym) + class << self + def set_logger(config) + return unless Logster.config.environments.include?(Rails.env.to_sym) - require "logster/middleware/debug_exceptions" - require "logster/middleware/reporter" + require "logster/middleware/debug_exceptions" + require "logster/middleware/reporter" - store = Logster.store ||= Logster::RedisStore.new - store.level = Logger::Severity::WARN if Rails.env.production? + store = Logster.store ||= Logster::RedisStore.new + store.level = Logger::Severity::WARN if Rails.env.production? - if Rails.env.development? - require "logster/defer_logger" - logger = Logster::DeferLogger.new(store) - else - logger = Logster::Logger.new(store) - end + if Rails.env.development? + require "logster/defer_logger" + logger = Logster::DeferLogger.new(store) + else + logger = Logster::Logger.new(store) + end - logger.chain(::Rails.logger) - logger.level = ::Rails.logger.level + logger.level = ::Rails.logger.level - Logster.logger = ::Rails.logger = config.logger = logger - end + Logster.logger = config.logger = logger - def self.initialize!(app) - return unless Logster.config.environments.include?(Rails.env.to_sym) + if rails_71? + ::Rails.logger.broadcast_to(logger) + else + logger.chain(::Rails.logger) + ::Rails.logger = logger + end + end + + def initialize!(app) + return unless Logster.config.environments.include?(Rails.env.to_sym) + return unless logster_enabled? - if Logster::Logger === Rails.logger if Logster.config.enable_js_error_reporting app.middleware.insert_before ActionDispatch::ShowExceptions, Logster::Middleware::Reporter end @@ -52,6 +59,17 @@ def self.initialize!(app) Logster.config.application_version = git_version.strip if git_version.present? end end + + private + + def logster_enabled? + return ::Rails.logger == Logster.logger unless rails_71? + ::Rails.logger.broadcasts.detect { _1 == Logster.logger } + end + + def rails_71? + ::Rails.version >= "7.1" + end end class Railtie < ::Rails::Railtie