Ruby Class documentation

A

Aa Aa

Hi,

I noticed that when I save an internet resource to my local disk, ruby
keeps the file open until the program terminates. After some searching I
noticed that close method should be called after you're done with the
writing part.
I checked the File class documentation at
http://ruby-doc.org/core/classes/File.html several times but there's not
trace of the close method. I assume that File inherits from another
class which actually contains the close method. I've also searched for
the parent class in the File documentation but couldn't find that
either.

So my question is: Where can I find the documentation on the File.close
method? If File actually is a subclass of another class then how is this
indicted in the documentation?

Regards,
DarnDao
 
T

Tim Hunter

Aa said:
So my question is: Where can I find the documentation on the File.close
method? If File actually is a subclass of another class then how is this
indicted in the documentation?

File gets close from its parent IO. On the page you linked to, the
parent of File is shown in the line "Parent: IO" in the upper-left corner.
 
J

Jano Svitok

Hi,

I noticed that when I save an internet resource to my local disk, ruby
keeps the file open until the program terminates. After some searching I
noticed that close method should be called after you're done with the
writing part.
I checked the File class documentation at
http://ruby-doc.org/core/classes/File.html several times but there's not
trace of the close method. I assume that File inherits from another
class which actually contains the close method. I've also searched for
the parent class in the File documentation but couldn't find that
either.

So my question is: Where can I find the documentation on the File.close
method? If File actually is a subclass of another class then how is this
indicted in the documentation?

In the upper lefthand corner there is Parent: IO, and IO is a
hyperlink to IO documentation.
IO contains the close method.

Related to this:

It's usually better to use block form of File.open, than File.new and
File#close.
i.e.
instead of

f = File.new('xxxx',''w')
f << "dfsdfsd"
f.close

do

File.open('xxxx','w') do |f|
f << "fdfdsfsdf"
end

The file will be closed when the control exits from the block (even in
the case of an exception).

File.new is usually used when you need to keep the file open longer
than a scope of one method.
(setting a member/attribute, returning open file from a method, etc.)

J.
 
A

Aa Aa

In the upper lefthand corner there is Parent: IO, and IO is a
hyperlink to IO documentation.
IO contains the close method.

Thanks, I probably missed that because it doesn't look like something
you can click on :)
Related to this:

It's usually better to use block form of File.open, than File.new and
File#close.
i.e.
instead of

f = File.new('xxxx',''w')
f << "dfsdfsd"
f.close

do

File.open('xxxx','w') do |f|
f << "fdfdsfsdf"
end

The file will be closed when the control exits from the block (even in
the case of an exception).

File.new is usually used when you need to keep the file open longer
than a scope of one method.
(setting a member/attribute, returning open file from a method, etc.)

J.

Really useful tip, looks similar to the C# using statement.
 
D

Damjan Rems

Aa said:
Thanks, I probably missed that because it doesn't look like something
you can click on :)

And can become an oneliner.

File.open('xxxx','w') { |f| f << "fdfdsfsdf" }


by
TheR
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,778
Messages
2,569,605
Members
45,238
Latest member
Top CryptoPodcasts

Latest Threads

Top