diff --git a/lib/rails_semantic_logger.rb b/lib/rails_semantic_logger.rb index 3a91ec6..ed95e9a 100644 --- a/lib/rails_semantic_logger.rb +++ b/lib/rails_semantic_logger.rb @@ -49,7 +49,7 @@ def self.swap_subscriber(old_class, new_class, notifier) def self.unattach(subscriber) subscriber_patterns(subscriber).each do |pattern| - ActiveSupport::Notifications.notifier.listeners_for(pattern).each do |sub| + listeners_for(ActiveSupport::Notifications.notifier, pattern).each do |sub| next unless sub.instance_variable_get(:@delegate) == subscriber ActiveSupport::Notifications.unsubscribe(sub) @@ -67,7 +67,15 @@ def self.subscriber_patterns(subscriber) end end - private_class_method :subscriber_patterns, :unattach + def self.listeners_for(notifier, pattern) + if notifier.respond_to?(:all_listeners_for) # Rails >= 7.1 + notifier.all_listeners_for(pattern) + else + notifier.listeners_for(pattern) + end + end + + private_class_method :listeners_for, :subscriber_patterns, :unattach end require("rails_semantic_logger/extensions/mongoid/config") if defined?(Mongoid)