From 436be42c6b2e4bf2f78fa9f00b05162d14ae9cde Mon Sep 17 00:00:00 2001 From: Michael Hashizume Date: Fri, 3 May 2024 10:05:12 -0700 Subject: [PATCH] Use Set instead of Array for warn & debug messages Prior to this commit, Facter's logger used Arrays to store warn and debug messages. When using the warnonce and debugonce options, Facter would call #include? on the warn and debug arrays. This commit updates Facter to use Sets instead of Arrays to store warn and debug messages, making it more performant to search through the messages (i.e. call #include?). --- lib/facter/framework/logging/logger.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/facter/framework/logging/logger.rb b/lib/facter/framework/logging/logger.rb index f7e1662ee4..bb124203c6 100644 --- a/lib/facter/framework/logging/logger.rb +++ b/lib/facter/framework/logging/logger.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require 'logger' +require 'set' module Facter RED = "\e[31m" @@ -15,8 +16,8 @@ class Log @@logger = nil @@message_callback = nil @@has_errors = false - @@debug_messages = [] - @@warn_messages = [] + @@debug_messages = Set.new + @@warn_messages = Set.new @@timing = false class << self