i've been wanting a better alias_method for quite some time.  essentially i'd
like a way out of the trap where executing

   alias_method '__fubar__', 'fubar'

goes haywire when __fubar__ already exists.  we've all seen it happen before.

anyhow.  the interface it'd like would be


   class C
     def m() 'a' end

     push_method 'm'

     def m() super + 'b' end
   end

   p C.new.m  #=> 'ab'


what i've got is quite close, but no cigar.  it has a fundemental problem with
the way ruby scopes super which i'm too tired atttm to figure out.  i'm hoping
i can go to bed and wake up to a nice patch ;-)  here's what i've got:


     harp:~ > cat a.rb
     class Module
       def push_method m
         this = self

         include Module.new{
           @m = this.instance_method m

           this.module_eval{ remove_method m }

           module_eval <<-code
             def #{ m }(*a, &b)
               um = ObjectSpace._id2ref #{ @m.object_id }
               um.bind(self).call *a, &b
             end
           code
         }
       end
     end

     class C
       def m
         'a'
       end
       p new.m #=> 'a'


       push_method 'm'


       def m
         super + 'b'
       end
       p new.m #=> 'ab'


       push_method 'm'


       def m
         super + 'c'
       end
       p new.m #=> 'abc'
     end



     harp :~ > ruby a.rb
     "a"
     "ab"
     a.rb:31:in `m': stack level too deep (SystemStackError)
             from (eval):3:in `m'
             from a.rb:31:in `m'
             from (eval):3:in `m'
             from a.rb:31:in `m'
             from (eval):3:in `m'
             from a.rb:31:in `m'
             from (eval):3:in `m'
             from a.rb:31:in `m'
              ... 2343 levels...
             from a.rb:31:in `m'
             from (eval):3:in `m'
             from a.rb:40:in `m'
             from a.rb:42


have at it - i'll be back in 8 hrs.  ;-)


-a
-- 
what science finds to be nonexistent, we must accept as nonexistent; but what
science merely does not find is a completely different matter... it is quite
clear that there are many, many mysterious things.
- h.h. the 14th dalai lama