Я тоже задумался об этом, когда начал все больше и больше использовать Capistrano.Я думаю, что большинство из нас согласны с тем, что имеет смысл отслеживать конфигурацию времени выполнения информацию отдельно от функционального кода верно?Так не должно ли быть то же самое в отношении конфигурации развертывания ?
Полагаю, вы можете сделать папку ./deploy/
подмодулем SCM.Вы можете создать грабельное задание, которое сгенерирует Capfile в вашу рабочую копию, чтобы вы могли хранить возможные пароли и прочее вне приложения ... Для этого может быть даже доступный драгоценный камень.
Однако я выбрал альтернативный подход:
У меня есть около десяти различных приложений, в которых большинство переменных Capistrano могут следовать шаблону, например set(:deploy_to) {"#{base_dir}/#{environment}/#{application}"}
, и аналогично для путей к хранилищу исходного кода.
Я извлек все знания о развертывании из отдельных приложений и вместо этого поместил их в один отдельный общий проект "развертывания".Теперь я могу проверить этот проект и начать:
cap [some application] [environment] [deploy task]
Я предпочитаю этот шаблон / разделение интересов гораздо больше, чем распространение вокруг Capfiles повсюду.