3rd crack at Hartl's sample app, accounting for version changes in gems