Как предотвратить создание символических ссылок Capistrano в «общем» каталоге при развертывании?

По умолчанию задача Capistrano deploy создает символические ссылки из каталогов shared/log, shared/system и shared/pids в каталог выпуска. Как я могу предотвратить это?


person mjs    schedule 09.11.2011    source источник


Ответы (2)


Если вы посмотрите на исходный код для разверните рецепт в строке 52, вы можете увидеть:

=========================================================================
These variables should NOT be changed unless you are very confident in
what you are doing. Make sure you understand all the implications of your
changes if you do decide to muck with these!
=========================================================================
...
_cset :shared_children,   %w(system log pids)
...

Вот как определяются общие папки. Я полагаю, вы могли бы добавить следующую строку в свой рецепт capistrano, чтобы предотвратить символические ссылки на эти каталоги:

set :shared_children, %w()

Обновление: Что касается комментариев ниже: теперь с пограничной версией capistrano это должно работать. См. этот запрос на включение, чтобы сделать символические ссылки менее жестко запрограммированными.

person HectorMalot    schedule 10.11.2011
comment
Следуя вашему совету, я проверил исходный код, и кажется, что, хотя :shared_children позволяет вам изменять созданные каталоги, фактический бит символической ссылки выполняется каким-то грубым жестким кодированием: github.com/capistrano/capistrano/blob/ - person mjs; 10.11.2011
comment
Хороший улов! Учит меня, что я должен был проверить свое предложение перед отправкой. Я предполагаю, что вы можете переопределить задачу finalize_update, чтобы предотвратить создание символических ссылок на эти каталоги, но это не похоже на правильный путь. - person HectorMalot; 11.11.2011
comment
Просто обратите внимание, что этот запрос на вытягивание попал в версию 2.10 (а не в версию 2.9). Возможно, вам потребуется обновить ваш capistrano с помощью: bundle update capistrano - person Mike Schroll; 23.05.2012

Невозможно избежать этих символических ссылок; это делается довольно грубым (!) жестким кодированием в deploy.rb

Возможно, исправлено в capistrano 2.10; см. Как предотвратить создание Capistrano символические ссылки в `shared` каталоге при развертывании?.

person mjs    schedule 16.11.2011