[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Newbie query regarding ruby best practice

Neowulf

1/31/2006 11:51:00 AM

Hi all,

I've just finished working on a few util scripts in Ruby to cut my
teeth and I was wondering what the best practice is with regards the
use of class methods.

E.g. Is it better to do something like this...

require 'fileutils'

FileUtils.mv(myfile,newpath)
FileUtils.cp(newpath,anotherpath)
FileUtils.rm(newpath)

or this...

fu = FileUtils.new

fu.mv(myfile,newpath)
fu.cp(newpath,anotherpath)
fu.rm(newpath)

I assume the second would only create a single instance of a
"fileutils" object, thus requiring less overhead than the first?

~Neowulf

4 Answers

Tim Hunter

1/31/2006 1:07:00 PM

0

Welcome to Ruby! Regarding your question, let's use irb try it out...

C:\irb
irb(main):001:0> require 'fileutils'
=> true
irb(main):002:0> fu = FileUtils.new
NoMethodError: undefined method `new' for FileUtils:Module
from (irb):2
irb(main):003:0> quit

Looks like FileUtils isn't a class and doesn't have a .new method. It's
just a module that contains a bunch of handy methods for file
operations.

FileUtils has very good documentation. Use "ri FileUtils" to see it.

Neowulf

2/1/2006 4:11:00 AM

0

Ah... I see. Your not really creating an instance of the object at
all.

Thanks for the heads up.

I'm really starting to enjoy coding in Ruby.

Thanks again for the help.

Cheers,

~Neowulf

Joel VanderWerf

2/1/2006 10:43:00 PM

0

Neowulf wrote:
> Hi all,
>
> I've just finished working on a few util scripts in Ruby to cut my
> teeth and I was wondering what the best practice is with regards the
> use of class methods.
>
> E.g. Is it better to do something like this...
>
> require 'fileutils'
>
> FileUtils.mv(myfile,newpath)
> FileUtils.cp(newpath,anotherpath)
> FileUtils.rm(newpath)
>
> or this...
>
> fu = FileUtils.new
>
> fu.mv(myfile,newpath)
> fu.cp(newpath,anotherpath)
> fu.rm(newpath)
>
> I assume the second would only create a single instance of a
> "fileutils" object, thus requiring less overhead than the first?
>
> ~Neowulf
>

Or

fu = FileUtils

(without the .new)

I don't think FileUtils.mv creates a new instance of FileUtils. These
are class methods, so you can call them directly on the class object
without instantiating the class.

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407


bpettichord

2/2/2006 6:40:00 AM

0

> E.g. Is it better to do something like this...

> require 'fileutils'

> FileUtils.mv(myfile,newpath)
> FileUtils.cp(newpath,anotherpath)
> FileUtils.rm(newpath)

Try this...

require 'fileutils'
include FileUtils
mv(myfile, newpath)
cp(newpath,anotherpath)
rm(newpath)

If you are looking for a more concise way of using a module (which is
what FileUtils is), this is a common idiom for doing it.

Bret