Capistrano is a framework for deploying Rails application (you can do more with it, but it comes with built-in tasks for rails). How does it work? It connects to the server through SSH, checks out the last version of your app from your subversion repository in a new directory (releases/{date}), runs migration (optional), symlinks the directory to /current. You’re up and running after simply running “cap deploy”.

It supports rollback when something goes wrong. Setup is really simple (for dreamhost, you can find info in the wiki). It supports more complex deployment scenarios to multiple machines (multiple app servers with one db server for example). It’s easily extensible if you need to add custom steps to your deployment procedure. Let’s say you have a directory for uploads, you can create a task to properly link to the new version.

It was my first time with Capistrano because I was working on Windows before. It is such a time-saver to have a great and powerful tool like this for deployment (compared to writing your own scripts). I think I’m in love.