It really has nothing to do with eval, your just setting a local variable. An unfortuate side effect of the setter notation is that it conflicts with local var setting. Local var setting wins out, so you have to use self as the reciever in order to tell ruby you mean the setter method. T.