我正在尝试编写一个用于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
在我特定的情况下设置在staging和production文件中 - 设置为 php /home/user/composer.phar
由于某种原因,该命令实际上并没有在当前发布目录中运行,而是在父目录中运行(包含current、shared、releases等目录)。
我进一步深入研究发现,当我运行单词命令时,例如:
within release_path do
execute "pwd"
end
这个命令可以正常工作,并在当前发布目录下运行。但是... 当我运行一个带有空格的命令时,比如:
within release_path do
execute "pwd && ls"
end
它在父目录中运行,而不是由within
块设置的目录。
可以有人阐明一下吗?谢谢!