Module: SilentStream::Enhanced

Defined in:
lib/silent_stream.rb

Instance Method Summary collapse

Instance Method Details

#silence_all(switch = true, temporary_level = Logger::ERROR, logger = nil) ⇒ Object

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.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/silent_stream.rb', line 25

def silence_all(switch = true, temporary_level = Logger::ERROR, logger = nil)
  if !switch || ENV['NO_SILENCE'] == 'true'
    yield
  else
    begin
      logger ||= defined?(Rails) ? Rails.logger : nil
      logger && (old_logger_level = logger.level || true) && (logger.level = temporary_level)
      # silence STDOUT (like puts)
      silence_stream(STDOUT) do
        yield
      end
    ensure
      logger && (logger.level = old_logger_level)
    end
  end
end