Судя по engineyard-serveride API , он не отменяет миграцию. Это имеет смысл, учитывая, насколько непредсказуемо это может быть. Для справки, действительный код, который выполняет миграцию:
# task
def rollback
if c.all_releases.size > 1
rolled_back_release = c.latest_release
c.release_path = c.previous_release(rolled_back_release)
revision = File.read(File.join(c.release_path, 'REVISION')).strip
info "~> Rolling back to previous release: #{short_log_message(revision)}"
run_with_callbacks(:symlink)
sudo "rm -rf #{rolled_back_release}"
bundle
info "~> Restarting with previous release"
with_maintenance_page { run_with_callbacks(:restart) }
else
info "~> Already at oldest release, nothing to roll back to"
exit(1)
end
end
Вы можете довольно легко разобрать это, чтобы означать, что он повторно выполняет символическую ссылку для вашего проекта, удаляет новейшее (неудачное) развертывание и перезапускает веб-сервер.