From: Gaspard Bucher Date: 2007-09-25T23:17:58+09:00 Subject: Re: create a class in a class with eval Thanks for the answer. Works great. I just changed Module to Object since: Object.const_set("A", Class.new) ==> A Module.const_set("A", Class.new) ==> Module::A 2007/9/25, David A. Black : > Hi -- > > On Tue, 25 Sep 2007, Gaspard Bucher wrote: > > > I need to eval code that will create globally available classes. I tried this : > > > > class Test > > def makeA > > Module.send(:eval, "class A; end") > > # same with: eval "class A; end" > > puts Test.const_get('A') # => Test::A > > puts Module.const_get('A') # => raise NameError, why ? > > end > > end > > > > eval "class B; end" > > puts Module.const_get('B') # => B > > > > Test.new.makeA #=> bang > > You could do: > > Module.module_eval "class A; end" > > or (preferable, in my opinion): > > Module.const_set("A", Class.new) > > > David > > -- > Upcoming training from Ruby Power and Light, LLC: > * Intro to Ruby on Rails, Edison, NJ, October 23-26 > * Advancing with Rails, Edison, NJ, November 6-9 > Both taught by David A. Black. > See http://www.rubypal.com for more info! > >