Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bd367af

Browse files
committed
Set filename when initializing logger with a File object
This should allow reopen to work. Requested in ruby issue #14595.
1 parent ffa7d0d commit bd367af

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

lib/logger/log_device.rb

+3
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ def reopen(log = nil)
7878
def set_dev(log)
7979
if log.respond_to?(:write) and log.respond_to?(:close)
8080
@dev = log
81+
if log.respond_to?(:path)
82+
@filename = log.path
83+
end
8184
else
8285
@dev = open_logfile(log)
8386
@dev.sync = true

test/logger/test_logdevice.rb

+15
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,21 @@ def test_initialize
6060
ensure
6161
logdev.close
6262
end
63+
# logfile object with path
64+
tempfile = Tempfile.new("logger")
65+
tempfile.sync = true
66+
logdev = d(tempfile)
67+
begin
68+
logdev.write('world')
69+
logfile = File.read(tempfile.path)
70+
assert_equal(1, logfile.split(/\n/).size)
71+
assert_match(/^world$/, logfile)
72+
assert_equal(tempfile.path, logdev.filename)
73+
ensure
74+
logdev.close
75+
File.unlink(tempfile)
76+
tempfile.close(true)
77+
end
6378
end
6479

6580
def test_write

0 commit comments

Comments
 (0)