The statement #{fido}implicitly calls fido.to_s. That is why you get "Fido" whose meaning @name.
In fact, it "My dog is #{fido.to_s}"is redundant since the bit #{}is causing to_s.
Here is another way to format strings:
"My dog is %s" % fido
#{}. , %s , to_s fido. "My dog is %s" % fido.to_s, .