Bob Hutchison wrote:
> Thanks! I think a variation of Ara's and Sean's suggestion with  your's 
> Robert cover the various circumstances I've got to deal with.

You can automate things a bit (thanks to bitsweat for helping me find
singleton_method_added again). Here is a version which enables you to
easily control which classes have this feature:


   module ParentalControls
     module ClassIncludes
       def singleton_method_added(sym)
         class_eval <<-END
           def #{sym}(*a, &b)
             self.class.#{sym}(*a, &b)
           end
         END
       end
     end

     def self.included(mod)
       mod.extend ClassIncludes
     end
   end

   class Foo
     include ParentalControls

     def self.foo()
       42
     end
   end

   puts Foo.foo
   puts Foo.new.foo

> Cheers,
> Bob
> 
> On Oct 18, 2005, at 3:41 AM, Robert Klemme wrote:
> 
>> Bob Hutchison wrote:
>>
>>> Hi,
>>>
>>> I'd like to confirm that I cannot use any kind of aliasing to tidy up
>>> the following situation:
>>>
>>> class Junk
>>>    def Junk.info
>>>      "blah blah blah"
>>>    end
>>>
>>>    def info
>>>      Junk.info
>>>    end
>>> end
>>>
>>> I'd really like to be able to write the following:
>>>
>>> puts Junk.info
>>>
>>> # then somewhere far from there...
>>> junk = Junk.new
>>> puts junk.info
>>>
>>> I don't find junk.class.info satisfying, and if that were a module
>>> method, then you have to know too much.
>>>
>>> I guess what I'm trying to do is make class/module methods directly
>>> available to instances, and it seems I can't do that (whatever the
>>> reason).
>>>
>>> Any better ideas are more than welcome.
>>>
>>
>> Here's another approach:
>>
>> module Helper
>>   def info() 42 end
>> end
>> class Foo
>>   include Helper
>>   extend Helper
>> end
>>
>>
>>>> Foo.info
>>>>
>> => 42
>>
>>>> Foo.new.info
>>>>
>> => 42
>>
>> Kind regards
>>
>>     robert
>>
>>
>>
> 
> ----
> Bob Hutchison

E