Мне, должно быть, чего-то не хватает с Capistrano, потому что я только начал писать capfiles и смотрю на тонны дублированного кода. Учти это
role :dev, "dev1", "dev2"
role :prod, "prod1", "prod2"
desc "Deploy the app in dev"
task :deploy_dev, :roles => :dev do
run "sudo install-stuff"
end
desc "Deploy the app in prod"
task :deploy_prod, :roles => :prod do
run "sudo install-stuff"
end
ИМО, вполне разумно захотеть запустить одну и ту же задачу в dev или prod, но из того, что я могу сказать, Capistrano попросил бы меня написать 2 задачи, чтобы указать разные узлы ...
Похоже, если бы вы могли ссылаться на роли в CLI, например
cap deploy dev
cap deploy prod
в файле capfile могло бы быть единое определение задачи «развертывание», в отличие от дублированного для каждого набора серверов.
Есть ли способ написать задачу один раз и динамически указать роль?