Actions
Bug #18676
closedMisleading Documentation/Bug: Incorrect File.position on a file opened with "a" mode
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
Description
Documentation says that whenever a file is opened in "a" mode, the stream is positioned at the end of stream. However, #tell method returns 0 instead of the size of the file. (https://ruby-doc.org/core-3.1.1/IO.html#class-IO-label-Position)
Issue happens with latest version of ruby 3.1.1 as well.
How to reproduce:
cat code_to_reproduce.txt
fp = File.open("sample_data.txt", "a")
puts "File size=#{fp.size} position=#{fp.tell}"
Output: See the position value
->ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
->wc sample_data.txt
1 2 12 sample_data.txt
->cat sample_data.txt
hello world
->ruby code_to_reproduce.txt
File size=12 position=0
->cat code_to_reproduce.txt
fp = File.open("sample_data.txt", "a")
puts "File size=#{fp.size} position=#{fp.tell}"
Further debugging with irb
rb(main):009:0> fp = File.open("sample_data.txt", "a")
irb(main):010:0> fp.tell
=> 0
irb(main):011:0> fp.size
=> 12
irb(main):012:0> fp.fileno
=> 7
irb(main):013:0> Process.pid
=> 22675
Examining the offset in /proc filesytem
->cat /proc/22675/fdinfo/7
pos: 0
flags: 02102001
mnt_id: 30
Actions
Like0
Like0Like0Like0Like0