簡略化したcapistranoデプロイメントセットアップは次のようになります。
server "server_ip1", :role1
server "server_ip2", :role2
そして、2つのタスク
namespace :postgresql do
desc "Install necessary ubuntu packages"
task :install, roles: [:role2] do
run "#{sudo} apt-get -y install postgresql libpq-dev"
end
after "deploy:install", "postgresql:install"
end
namespace :app_install do
desc "Install necessary ubuntu packages"
task :install, roles: [:role1, :role2] do
run "#{sudo} apt-get -y install imagemagick"
end
after "deploy:install", "app_install:install"
end
ここで問題となるのは、cap deploy:install ROLES=role1
server_ip1でタスクを正しく実行すると、タスクapp_install:installとpostgresql:installの両方が実行されることです。
そして面白いのは、cap deploy:install
(ROLES = role1なしで)実行すると、すべてが「正しく」実行されることです。
何か問題がありますか?