Class names in Ruby must begin with a capital litter, like constants: class poke end ==> ERROR: class/module name must be CONSTANT On the other hand, dynamic assignment to constants is illegal: def foo Joe = 5 p Joe end ==> ERROR: dynamic constant assignment So suppose I have some method 'make_class' that returns a dynamically created class. I can do (outside a method): def make_class Class.new end Bobik = make_class() argh = Bobik.new p argh.class ==> Bobik Nice... But inside a method / class: def make_class Class.new end def try_it Bobik = make_class() end ==> ERROR: dynamic constant assignment However, I can do: def make_class Class.new end def try_it bobik = make_class() argh = bobik.new p argh.class end try_it ==> #<Class:0x2c17010> This looks like a mismatch between two unrelated features (true, assigning to constants dynamically is fishy, but creating new classes isn't !), right ? And why the class name 'Bobik' is printed, while #<Class:0x2c17010> is printed when the class name is in lowercase. Does the lowercase change anything semantically ? -- Posted via http://www.ruby-forum.com/.