I like the use of your new_animal variable here. I just want to point out that you could do this in one line without the new_animal variable at all.  @animals[animal_name] = Animal.new( ...