module SilentStream::Enhanced

Public Instance Methods

silence_all(switch = true, temporary_level = Logger::ERROR, logger = nil) { || ... } click to toggle source

param switch is true or false By default it is true, when means we don't want logging. Switching it to false enables logging again. By default ERROR log level continues to be logged. The return value is the return value of the block,

so you can use it without changing code structure.

This method is not thread-safe.

# File lib/silent_stream.rb, line 25
def silence_all(switch = true, temporary_level = Logger::ERROR, logger = nil)
  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) do
        yield
      end
    ensure
      silent_stream_reset_logger_level(logger, old_logger_level)
    end
  end
end

Private Instance Methods

silent_stream_logger() click to toggle source
# File lib/silent_stream.rb, line 48
def silent_stream_logger
  defined?(Rails) ? Rails.logger : nil
end
silent_stream_no_silence() click to toggle source
# File lib/silent_stream.rb, line 44
def silent_stream_no_silence
  ENV['NO_SILENCE'] == 'true'
end
silent_stream_reset_logger_level(logger, temporary_level) click to toggle source

returns previous logger's level

# File lib/silent_stream.rb, line 53
def silent_stream_reset_logger_level(logger, temporary_level)
  logger && (old_logger_level = logger.level || true) && (logger.level = temporary_level)
  old_logger_level
end