From: Robert Klemme Date: 2009-12-29T17:29:02+09:00 Subject: Re: Using #include at the instance level? 2009/12/29 Intransition : > I would like to use #include at an instance level, such that it > behaves just as it does at a class level. After a number of > experiments I thought for sure it would work if I ran the include > through the object's singleton. Alas, submodules remain inaccessible, > eg. > >  module M >    def m1; "m1"; end >    module N >      def self.n1; "n1"; end >    end >  end > >  class X >    def initialize(*mods) >      (class << self; self; end).class_eval do >        include *mods >      end >    end >    def m ; m1 ; end >    def n ; N.n1 ; end Hm, this method above won't work as scope resolution rules for constants are different. >  end > >  x = X.new(M) >  p x.m >  p x.n    #=> uninitialized constant X::N (NameError) > > Is there any way to achieve this? Did you consider using #extend? class X def initialize(*mods) extend *mods end end What do you really want to achieve? Do you have a more telling example? Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/