From: burke Date: 2010-01-27T10:55:06+09:00 Subject: Re: Is there a way to have instance_eval cannot call private/protected method? I don't think there's any way to do quite exactly this, since calling, for example, 'method2 "m2"' relies on self being set to an instance of RealObject. If self is an instance of RealObject, there's no (sane) way to hide private methods. You might want to consider something like: def real_object(&block) x = RealObject.new yield x end real_object do |o| o.method2 "m2" o.method2 "m2.2" o.method1 "please fail me" end Burke