The reason for this is because Heroku limits the way you can store data on their servers. Back in the bamboo
stack days, storing any data was simply impossible without the use of an external service. Since they introduced the Cedar
stack, things have changed a little bit, but storing persistent data is still not possible.
As you’ve discovered, each time you push a new change to your Heroku application (or each time the application shuts down and restarts after being inactive for x minutes), your application is recreated and all stored data is lost.
Your best bet is to not use the /public directory at all, and start using an external service like Amazon S3, Rackspace Cloud Files or Spideroak.