summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Evans <[email protected]>2019-05-16 17:35:21 -0700
committerHiroshi SHIBATA <[email protected]>2019-07-15 14:43:08 +0900
commitf4064a0a0c24734b1ec98e6e2dbdf5e38e856c41 (patch)
tree8d6ef836c38a27ea960159370ddcafab8df0f890
parent2c22051b4b54482531e43915f5edef0c3d3a053b (diff)
[ruby/logger] Set filename when initializing logger with a File object
This should allow reopen to work. Requested in ruby issue #14595. https://github.com/ruby/logger/commit/bd367aff12
-rw-r--r--lib/logger/log_device.rb3
-rw-r--r--test/logger/test_logdevice.rb15
2 files changed, 18 insertions, 0 deletions
diff --git a/lib/logger/log_device.rb b/lib/logger/log_device.rb
index d287a470fc..c6dc43c11a 100644
--- a/lib/logger/log_device.rb
+++ b/lib/logger/log_device.rb
@@ -76,6 +76,9 @@ class Logger
def set_dev(log)
if log.respond_to?(:write) and log.respond_to?(:close)
@dev = log
+ if log.respond_to?(:path)
+ @filename = log.path
+ end
else
@dev = open_logfile(log)
@dev.sync = true
diff --git a/test/logger/test_logdevice.rb b/test/logger/test_logdevice.rb
index 30047f89b1..72802f690d 100644
--- a/test/logger/test_logdevice.rb
+++ b/test/logger/test_logdevice.rb
@@ -60,6 +60,21 @@ class TestLogDevice < Test::Unit::TestCase
ensure
logdev.close
end
+ # logfile object with path
+ tempfile = Tempfile.new("logger")
+ tempfile.sync = true
+ logdev = d(tempfile)
+ begin
+ logdev.write('world')
+ logfile = File.read(tempfile.path)
+ assert_equal(1, logfile.split(/\n/).size)
+ assert_match(/^world$/, logfile)
+ assert_equal(tempfile.path, logdev.filename)
+ ensure
+ logdev.close
+ File.unlink(tempfile)
+ tempfile.close(true)
+ end
end
def test_write