From: Sean O'Halpin Date: 2006-07-13T21:47:37+09:00 Subject: Re: re-define class method On 7/13/06, David Chelimsky wrote: > On Jul 13, 2006, at 5:33 AM, dblack@wobblini.net wrote: > > > On Thu, 13 Jul 2006, David Chelimsky wrote: > > > >> thing_singleton_class = class << Thing; self; end > >> thing_singleton_class.send(:define_method, :class_method, proc > >> { "replaced" }) > >> > >> Thing.class_method > >> => "replaced" > > > > Don't forget that you can do this much more concisely (unless you have > > a specific need to go the long way round): > > > > def Thing.class_method > > "replaced" > > end > > Thanks David. I definitely appreciate the conciseness of this, and > will use that when I know the type. The problem I'm working on > requires a solution to replacing singleton methods on arbitrary types > at runtime, so I think I have to stick w/ the more cryptic version. > Unless you have a different suggestion - I'm just getting my head > wrapped around metaprogramming and singleton classes, so all > suggestions are most welcome. > > Thanks, > David > You can use David's method like this: def redefine_method_for(klass) def klass.class_method "replaced" end end redefine_method_for Thing p Thing.class_method #=> "replaced" Regards, Sean