Capistrano is something completely different. In all the previous sections, “deployment” refers to the act of starting your Ruby app in an application server, so that it becomes accessible to visitors, but before that can happen one typically needs to do some preparation work, such as:
- Uploading the Ruby app’s code and files to the server machine.
- Installing libraries that your app depends on.
- Setting up or migrating the database.
- Starting and stopping any daemons that your app might rely on, such as Sidekiq/Resque workers or whatever.
- Any other things that need to be done when you’re setting up your application.
In the context of Capistrano, “deployment” refers to doing all this preparation work. Capistrano is not an application server. Instead, it is a tool for automating all that preparation work. You tell Capistrano where your server is and which commands need to be run every time you deploy a new version of your app, and Capistrano will take care of uploading the Rails app to the server for you and running the commands you specified.
Capistrano is always used in combination with an application server. It does not replace application servers. Vice-versa, application servers do not replace Capistrano, they can be used in combination with Capistrano.
Of course you don’t have to use Capistrano. If you prefer to upload your Ruby app with FTP and manually running the same steps of commands every time, then you can do that. Other people got tired of it, so they automate those steps in Capistrano.