At it's very simplest, deployment is no different to what you might do when setting up a new development machine:
- checkout the latest version of the app
- make sure files like database.yml are correct (typically these aren't checked into source control since they could be different for each host on which you deploy)
- run bundle in case any gems need updating
- run migrations (if necessary)
- precompile assets
- restart whatever you are using to host your app (passenger, unicorn etc.)
Capistrano automates all that, and makes a lot of things more convenient. For example, you typically want to be able to reuse the gems, compiled assets etc from the previous deploy, the normal approach is to put those things in a folder and then symlink them.
There are other tools such as vlad the deployer, mina or git-deploy (for a heroku style deploy-on-git-push workflow)
Fred