Me pregunté sobre esto también cuando comencé a utilizar Capistrano más y más. Creo que la mayoría de nosotros estamos de acuerdo en que tiene sentido rastrear información de configuración de tiempo de ejecución información por separado desde código de función ¿verdad? Entonces, ¿no debería suceder lo mismo con la configuración de implementación ?
Supongo que puede hacer que su carpeta ./deploy/
sea un submódulo SCM. Puede hacer una tarea de rake que genere el archivo Cap en su copia de trabajo para poder guardar contraseñas eventuales y cosas fuera de la aplicación ... Incluso puede haber una gema disponible para esto.
Sin embargo he optado por un enfoque alternativo:
tengo unos diez aplicaciones diferentes, a través de los cuales la mayoría de las variables Capistrano podría seguir un patrón como set(:deploy_to) {"#{base_dir}/#{environment}/#{application}"}
, y del mismo modo para el código fuente de las rutas de repositorios.
Saqué todos todos los conocimientos sobre la implementación de las aplicaciones individuales y, en su lugar, lo puse en un proyecto separado y común de "implementación". Ahora puedo comprobar que el proyecto e ir:
cap [some application] [environment] [deploy task]
prefiero este patrón/separación de intereses mucho más que la difusión en torno Capfiles todas partes.