From: "cardboard42@..." Date: 2008-08-09T06:03:09+09:00 Subject: Re: Works in irb but not elsewhere I think what's happening is that yield is calling the block passed to the caller of instance_eval so method is being called on self in that block's closure. Since it was executed at the top level that would be Object. Object.method takes 1 parameter, thus causing the error you're seeing. The reason the code I posted works because it takes the block passed to create and passes it directly to instance_eval as it's block. This means that method will be called on self in instance_eval, where it is set to the object instance_eval is called on, in this case the result of A.new. Sorry if my explanation is hard to understand, but I'm positive this is not a bug in ruby. instance_eval { yield } simply has very different semantics from instance_eval &block. Ken