Actions
Feature #17994
openClarify `IO.read` behavior and add `File.read` method
Status:
Open
Assignee:
-
Target version:
-
Description
IO.read
creates a subprocess when a given file name starts with a |
character.
irb(main):001:0> IO.read("| ls /etc/passwd")
=> "/etc/passwd\n"
To disable this feature, File.read
can be used.
irb(main):002:0> File.read("| ls /etc/passwd")
(irb):2:in `read': No such file or directory @ rb_sysopen - | ls /etc/passwd (Errno::ENOENT)
So, as far as I know, File.read
is more prefereable to IO.read
if a user want to just read a file.
However, in terms of the implementation, there is no definition of File.read
. File.read
invokes IO.read
because IO
is a superclass of File
, and IO.read
creates a subprocess only when its receiver is exactly the IO
class.
I think there are two problems in the current situation:
- The rdoc of
IO.read
does not explain the behavior to disable a subprocess invocation. - The rdoc does not have an entry for
File.read
.
I've created a PR to address the two issues by clarifying IO.read
behavior and defining File.read
as an alias to IO.read
.
Actions
Like0
Like0Like0Like0Like0Like0