現在のリリースのディレクトリ内で「composer install」を実行する 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
ブロックによって設定されたディレクトリではなく、親ディレクトリで実行されます。
誰かがこれに光を当てることができますか? ありがとう!