Skip to content
  • Edouard CHIN's avatar
    05ad44eb
    Fix the LoggerSilence to work as described: · 05ad44eb
    Edouard CHIN authored
    - Following the Rails guide which state that a logger needs to include
      the `ActiveSupport::LoggerSilence` as well as
      `ActiveSupport::LoggerThreadSafe` modules isn't enough and won't
      work.
    
      Here is a test cases with 3 tests that all fails
      https://gist.github.com/Edouard-chin/4a72930c2b1eafbbd72a80c66f102010
    
      The problems are the following:
    
      1) The logger needs to call `after_initialize` in order to setup
      some instance variables.
      2) The silence doesn't actually work because the bare ruby Logger
      `add` method checks for the instance variable `@logger`. We need to
      override the `add` (like we used to in the ActiveSupport::Logger
      class).
      3) Calling `debug?` `info?` etc... doesn't work as the bare ruby
      methods will check for the instance variable. Again we need to
      override this methods (like we used to in the ActiveSupport::Logger
      class)
    
      The LoggerSilence won't work without LoggerThreadSafe, but the later
      is not public API, the user shouldn't have to include it so I
      modified to include it automatically.
      Same for the `after_initialize` method. I find unuintitive to have
      to call it directly. I modified to instance the variables when the
      module get included.
    05ad44eb
    Fix the LoggerSilence to work as described:
    Edouard CHIN authored
    - Following the Rails guide which state that a logger needs to include
      the `ActiveSupport::LoggerSilence` as well as
      `ActiveSupport::LoggerThreadSafe` modules isn't enough and won't
      work.
    
      Here is a test cases with 3 tests that all fails
      https://gist.github.com/Edouard-chin/4a72930c2b1eafbbd72a80c66f102010
    
      The problems are the following:
    
      1) The logger needs to call `after_initialize` in order to setup
      some instance variables.
      2) The silence doesn't actually work because the bare ruby Logger
      `add` method checks for the instance variable `@logger`. We need to
      override the `add` (like we used to in the ActiveSupport::Logger
      class).
      3) Calling `debug?` `info?` etc... doesn't work as the bare ruby
      methods will check for the instance variable. Again we need to
      override this methods (like we used to in the ActiveSupport::Logger
      class)
    
      The LoggerSilence won't work without LoggerThreadSafe, but the later
      is not public API, the user shouldn't have to include it so I
      modified to include it automatically.
      Same for the `after_initialize` method. I find unuintitive to have
      to call it directly. I modified to instance the variables when the
      module get included.
Loading