Развертывание - это то, чем оно является, развертывание.
Вы просите развернуть без развертывания (!?)
ИМХО, ваша проблема больше связана с SCM (svn, git,и т. д.), чем в Капистрано.Вы, вероятно, хотите развернуть часть своего кода (одну миграцию), но не все, что зафиксировано в trunk / master.Что вам нужно сделать, так это выполнить ветвление / метку для развертывания и выполнить развертывание из этой ветки / метки.
Например, если я использую svn, я всегда добавляю эти строки в мой deploy.rb:
set(:tag) { Capistrano::CLI.ui.ask("Tag to deploy: ") }
set(:repository) { "#{repository_root}/tags/#{tag}" }
таким образом я могу развернуть определенный тег, и мой SVN четко определил мой производственный код.
В вашем случае процедура будет такой:
- ветвь вашегопоследняя производственная версия
- применить любые изменения к этой ветви (желаемая миграция)
- пометить ее (например, prod-with_my_desired_migration)
- развернуть этот тег, включая cap deploy: migrate
У каждого инструмента есть своя цель, и мы должны использовать мощь каждого из них.