Jean Nibee wrote:
> Hi
>
> First off, thanks for letting me be a Ruby noob. I've read most of the 
> Pickaxe book and most of Why's guide (whee it's in PDF now) and I am 
> getting comfortable w/ Ruby. Coming from a long Java background I tend 
> to try and find similarities of things in Ruby to things in Java, simply 
> to try and 'get' them better.
>
> Modules have messed me up a bit but here's what I understand. (I'm the 
> only Ruby guy at my office so I have no-one to throw these questions off 
> of).
>
> Modules in effect 'wrap functionality', they have no other purpose than 
> to package up code that can be used/imported/inlined into other code and 
> classes. Since you can't instantiate them, they do nothing by 
> themselves. They are part of a greater whole.
>   

As Arnaud mentioned, they can 'do' stuff on their own if you create 
module-level methods. Remember, modules are objects, too.

> That being said.. could they be seen (From a functional standpoint) as 
> an abstract class? In other words, they are a piece of 'incomplete' 
> functionality that we must implement / use and build on but we can't use 
> by themselves.
>   

Actually, many people like to use them as namespaces as well. Packaging 
up functionality, as you say. Trying to make sure method names don't 
conflict with other packages.

> Thanks for your time.
>
>
> P.S. Do you package Modules in a different place than actual classes? (I 
> still live like a java programmer and put all my classes in their own 
> file.)
>   

There's nothing wrong with putting each class it its own file, and you 
can do the same with modules. In fact, you can even spread 
classes/modules across multiple files, since classes are always 'open'. 
Or put multiple classes/modules in one file. There is no enforced manner 
of doing things.

Hope that helps a little.

-Justin