module SilentStream::Enhanced
def silence_all(switch = true, temporary_level = Logger::ERROR, logger = nil, &block)
- Note: - This method is not thread-safe.
Returns:
-
(Object)
- Returns the block's return value.
Other tags:
- Yield: - The work to perform while silenced.
Parameters:
-
logger
(Logger, nil
) -- Logger instance to adjust; defaults to Rails.logger when available. -
temporary_level
(Integer
) -- Logger level to set temporarily (e.g., Logger::ERROR). -
switch
(Boolean
) -- When false, do not silence. Defaults to true.
def silence_all(switch = true, temporary_level = Logger::ERROR, logger = nil, &block) if !switch || silent_stream_no_silence yield else begin logger ||= silent_stream_logger old_logger_level = silent_stream_reset_logger_level(logger, temporary_level) # silence STDOUT (like puts) silence_stream(STDOUT, &block) ensure silent_stream_reset_logger_level(logger, old_logger_level) end end end
def silent_stream_logger
def silent_stream_logger (defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger) ? Rails.logger : nil end
def silent_stream_no_silence
def silent_stream_no_silence ENV["NO_SILENCE"] == "true" end
def silent_stream_reset_logger_level(logger, temporary_level)
def silent_stream_reset_logger_level(logger, temporary_level) logger && (old_logger_level = logger.level || true) && (logger.level = temporary_level) old_logger_level end