I\'m currently setting up a new production environment for a Rails application which includes multiple, load-balanced application servers (currently only two, but this will
Yeah. Capistrano manages multiple servers natively. No need for capistrano ext.
You only need to define multiple roles
role :app, "myserver.example.com"
role :db, "mysecondserver.example.com"
By default your tasks will be executed on every server. But you can limit a task to one or some servers only.
task :migrate, :roles => [:app, :db] do
# ...
end
Here, the task will be executed only on the app and db roles.
You can do the same with the run method.
run "rake db:migrate", :roles => :db
The rake db:migrate will be run only on the db server.
Assuming capistrano multistage:
In config/deploy/production
:
role :app, "server1", "server2", "server3"
Now a cap deploy production
will deploy to all 3 servers.
This is what I have tried in rails 4
:
config/deploy.rb:
role :app, %w{server1 server2 server3}