BufferedLogger#add doesn't modify the message argument. Closes #9702.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7643 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
1c68394b68
commit
6f06ac6e1a
|
@ -1,5 +1,7 @@
|
|||
*SVN*
|
||||
|
||||
* BufferedLogger#add doesn't modify the message argument. #9702 [eigentone]
|
||||
|
||||
* Added ActiveSupport::BufferedLogger as a duck-typing alternative (albeit with no formatter) to the Ruby Logger, which provides a very nice speed bump (inspired by Ezra's buffered logger) [DHH]
|
||||
|
||||
* Object#instance_exec produces fewer garbage methods. [Mauricio Fernandez]
|
||||
|
|
|
@ -52,7 +52,9 @@ module ActiveSupport
|
|||
def add(severity, message = nil, progname = nil, &block)
|
||||
return if @level > severity
|
||||
message = message || (block && block.call) || progname
|
||||
message << "\n" unless message[-1] == ?\n
|
||||
# If a newline is nessesary then create a new message end with a new line.
|
||||
# Ensures that the original message is not mutated.
|
||||
message = "#{message}\n" unless message[-1] == ?\n
|
||||
@buffer << message
|
||||
flush if auto_flushing
|
||||
message
|
||||
|
|
|
@ -38,4 +38,10 @@ class BufferedLoggerTest < Test::Unit::TestCase
|
|||
@logger.add(Logger::DEBUG) {evaluated = true}
|
||||
assert evaluated == false
|
||||
end
|
||||
|
||||
def test_should_not_mutate_message
|
||||
message_copy = @message.dup
|
||||
@logger.info @message
|
||||
assert_equal message_copy, @message
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue