I'd like to be able to push code to dev.myapp.com
for testing and then to www.myapp.com
for production use. Is this possible with Heroku?
Your interface to Heroku is essentially a Git branch. The Heroku gem does some work through their API, but within your Git repository, it's just a new remote branch.
heroku create yourapp # production
git br -D heroku # delete the default branch
heroku create staging-yourapp # staging
git br -D heroku # delete the default branch
Once you set up multiple applications on Heroku, you should be able to configure your Git repository like this:
git remote add staging [email protected]:staging-yourapp.git
git push origin staging
git remote add production [email protected]:yourapp.git
git push origin production
I usually work in a 'working' branch, and use Github for my master.
Assuming that's the case for you, your deploy workflow would probably look something like:
git co -b working
# do some work
# push to github:
git co master
git merge working
git push
# push to staging:
git co staging
git merge master
git push origin staging
# push to production
git co production
git merge master
git push origin production