Project

General

Profile

Bug #16962

Updated by ioquatix (Samuel Williams) 6 months ago

I discussed this with @eregon and I think the goal here is to try and figure out a way these interfaces can be a bit less confusing.  

 ## 1. 1/ I don't understand this behaviour: 

 ```ruby 
 STDOUT.close 
 STDOUT.puts "Hello World" 
 # => closed stream 
 ``` 

 vs 

 ```ruby 
 IO.for_fd(STDOUT.fileno, autoclose: true).close 
 STDOUT.puts "Hello World" 
 # => Hello World 
 ``` 

 ## 2. 2/ `IO.for_fd(..., autoclose: true/false)` 

 The documentation for `autoclose` is: 

 > If the value is false, the fd will be kept open after this IO instance gets finalized. 

 But it also seems to affect `#close` - i.e. calling close does not close underlying file descriptor. 

 Should we fix the documentation or is the implementation wrong? 

Back