Невозможно использовать настраиваемые значения переменных для каждой роли.
Вместо этого можно использовать многоступенчатое расширение из capistrano-ext , чтобы иметь разные этапы для двух разных ролей.
Если разные этапы не имеют смысла для вашего развертывания, вы можете написать свой собственный пакет: установить задачу и выполнить разные команды в зависимости от ролей
run "bundle --deployment --quiet", :roles => :web
run "bundle --deployment", :roles => :app
Как отмечено в комментарии ниже, этот подхододнако возникнут ошибки, если в роли не определен сервер.Он также будет запускать каждую команду последовательно.Чтобы обойти обе эти проблемы, используйте параллельный помощник.
parallel do |session|
session.when 'in?(:web)', "bundle --deployment --quiet"
session.when 'in?(:app)', "bundle --deployment"
end