Я пытаюсь написать задачу для Capistrano 3, которая предполагает выполнение "установки композитора" в каталоге текущей версии. Это выглядит примерно так:
namespace :composer do
desc 'Install dependencies with Composer'
task :install do
on roles(:web) do
within release_path do
execute "#{fetch(:composer_command)} install"
end
end
end
end
composer_command
задается в промежуточных и производственных файлах - в моем конкретном случае - php /home/user/composer.phar
По какой-то причине эта команда фактически не запускается в текущей папке выпуска, но вместо этого выполняется в родительском каталоге (содержащем текущий, общий, выпуск и т.д.)
Я углубился в это немного дальше и обнаружил, что когда я запускал одну команду слов, например:
within release_path do
execute "pwd"
end
Он отлично работает и запускает команду в текущей директории выпуска. Но..., когда я запускаю команду с пробелами, например:
within release_path do
execute "pwd && ls"
end
Он запускается в родительском каталоге, а не в каталоге, установленном блоком within
.
Может кто-то пролить свет на это? Спасибо!