我正在尝试为 Capistrano 3 编写一个任务,该任务涉及在当前版本的目录中执行“composer install”。它看起来像这样:
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
块设置的目录。
有人可以对此有所了解吗?谢谢!