Re: IO not closed by GC

Even GC.start does not guarantee that the garbage collection will be
actually started, it is just a hint after all. And I am not sure that
even when an IO object is being garbage collected, there will be an
implicit call to close(). I personally would not expect it as no
finalizers are installed by default.

So the programmer must take care to write the correct code, short or
long ;-).

Even if GC.start helped in your case, the overall code would be longer
(because of calls to GC.start) and work much worse (as GC does a lot
that you may not need for the moment) than what I have suggested. And
using blocks with popen is GUARANTEED to close descriptors properly. See
my point?

By the way, you are welcome.


I have a question abt this GC stuff, tangential to the challenge
itself, so million pardons, but I see this in many languages – it’s
always a suggestion rather than a requirement. Is this just to trip up
incautious programmers with shallow understanding? Or is it a hook for
special cases when you want to override that stuff w/custom memory
mgmt? What’s the benefit? I’ve seen so much use of this type of
command in bad Java and virtually never seen ppl using it anywhere
else. I guess I sound kind of aggressive or critical but it’s a common
decision among language designers so there must be some reason for it.
(Also apologies for the brevity, I’m on my mobile.)


This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs