Собственно осознал то, что я до конца не понимал, в каком порядке работают таски в Capistrano 2.
Задался вопросом ликвидировать этот пробел в своих знаниях.
И вот что получилось.
Дефолтный таск в указанном namespace
Когда вы запускаете
cap deploy
то это имеется в виду, что вы запукаете
cap <namespace>:<task>
Если task, не указан, то будет использоваться дефолтный таск в указанном namespace
Стандартный порядок запуска тасков
Смотрим ссылку [1].
Читаем описание по ссылке [2].
От себя добавлю немного цитат из исходного кода Capistrano:
namespace :deploy do
task :default do
update
restart
end
task :update do
transaction do
update_code
create_symlink
end
end
end
Про миграции в БД
В Capistrano имеется таска deploy:migrate. Она не запускается в стандартном потоке. Ее нужно запускать отдельно.
Вывод: я привязывал запуск миграций к таске deploy:update:
after 'deploy:update', 'project:migrations'
Думаю, что это неправильно и что лучше переопределить deploy:migrate, где описать все действия, связанные с миграциями и очисткой разноообразных кешей.
Также в Capistrano имеется таска deploy:migrations для "ленивых" :) :
task :migrations do
set :migrate_target, :latest
update_code
migrate
create_symlink
restart
end
Но тут надо обратить внимание на то, что нет транзакции, если сравнивать с deploy:update
Ссылки на ресурсы:
- https://github.com/capistrano/capistrano/wiki/2.x-Default-Deployment-Behaviour [1]
- https://github.com/capistrano/capistrano/wiki/Capistrano-Tasks [2]
Комментариев нет:
Отправить комментарий