Unfortunately, it's not actually an initialiser. Type confusion is really common in Ruby programs, sadly.
The construct in parent assigns 1 if foo is "falsey", not strictly if it is nil. Even if foo is already initialised but contains a "falsey" value it will be assigned 1.