Capistrano comes with a set of tasks ready to deploy your application. Unfortunately it doesn’t come with an easy way to view those tasks, and how they are related. Here is the graph you are probably looking for
This is a pretty crappy state of play! Given that Capistrano is the recommended way to deploy your applications. Let me justify that
- The deploy target: Why would I ever want to deploy and not run the migrations? If there are migrations, not running them is going to give me an untested environment, (new code, old database) and if there are no migrations, then there is no cost to running them.
- Inconsistent: Why is it that the deploy target wraps update_code and symlink in a transaction, but deploy:migrations does not?
- Unclear Naming: Its not imediatly clear what the difference between deploy:migrate and deploy:migrations is.
Capistrano is a really cool tool, but problems like this with the default tasks make it really confusing to use. I want to see it having default tasks that are named in a clear way, with a new convention if necessary, and consistent behaviour.