From: Mike Bethany Date: 2011-07-05T23:45:05+09:00 Subject: Re: Define a constant in dynamically defined class --0016e64610fc76a13a04a7538743 Content-Type: text/plain; charset=ISO-8859-1 You could do this: k = Class.new do class_eval("class X; end") end puts k::X.object_id On Tue, Jul 5, 2011 at 10:15 AM, Intransition wrote: > Have me a conundrum. > > k = Class.new() do > class X; end > end > > k::X.object_id > > results in > > (irb):7: warning: toplevel constant X referenced by # 0x00000001954380>::X > > I don't want X to be toplevel. I want it to be under `k`. To > complicate matters I don't have control over the block, as it actually > comes from a testing procedure defined by an end user. The actual code > is this: > > # Create a sub-case. > # > def context(desc=nil, &block) > cls = Class.new(TestCase, &block) > cls.desc(desc) if desc > cls > end > > Is there any way to isolate X to k? And then apply it to the more > general dynamic case? > > Thanks. > > --0016e64610fc76a13a04a7538743--