We recently had a bug where we were bypassing the setter method in initialize() which bit us as well, so while its normal to use instance variables in initialize() its actually better to go through the accessors even there.  Here, of course, you've got attr_readers with no writer methods in the class, so that is when you initialize is the only 'setter' so it should access the instance variables.  I could be easily persuaded that a private writer with initialize using that instead of twiddling the instance variables directly would be better, but that produces a bit more ceremony in writing classes if you go down that road...