Yep, it's the extend that did it for me.

I now have a much better idea of Ruby lookup mechanisms :-)

Many thanks to both you and David,
Ken



Robert Dober wrote:
> On 8/3/07, dblack / rubypal.com <dblack / rubypal.com> wrote:
>   
>> Hi -
>>
>> On Sat, 4 Aug 2007, Kenneth McDonald wrote:
>>
>>     
> <snip>
>   
>> Modules are themselves objects.  That means that when you send a
>> message to a module, it looks for that method in its lookup path.
>> However, a module does not lie in its own lookup path (unless you
>> include it in itself).
>>     
> Hmm I think it might be useful to clarify this a little bit
> when David talks about including a module in itself he means including
> it into the lookup array of itself, this is done with extend, not with
> include.
> As a matter of fact you cannot do this:
> module A
>    def a; 110 end
>    include self
> end
> it does not make sense either, right, however you can do this of course
> module A
>    def a; 132 end
>    extend self
>    p a
> end
> a different way to do this is
> modue A
>    def a; 222 end # that is a nice way to say 42 ;)
>    module_function :a
> end
> Now a is not available as *public* instance method anymore it becomes *private*.
>
> Cheers
> Robert
>
>
>
>