bwv549 wrote:
> module SomeModule
>   def happy?
>     puts 'yes'
>   end
> end
> 
> #  I can do this:
> some_object.extend(SomeModule)
> some_object.happy?   # -> 'yes'
> 
> # But I really need to give the class the method (not just instances)
> # because I have a collection of hundreds of thousands of objects
> # and need them all to have the method quickly.
> 
> # The problem is that I don't know the class that needs to include the
> method
> # until runtime!
> 
> # This won't work:
> 
> some_object.class.include(SomeModule)
> # -> NoMethodError: private method `include' called for <SomeClass>
> 
> # What is the workaround to add a method to a class (known only at
> runtime)?
> 
> Thanks

You have a misunderstanding here. *All* methods are added to classes at 
runtime, since that's the only "time" ruby has (there is no compile 
time). Of course, C-extensions are excluded from this.
You can always reopen a class:
class Array
  def foo; "foo!"; end
end
[].foo # => "foo!"

Regards
Stefan
-- 
Posted via http://www.ruby-forum.com/.