Sto provando a scrivere un'attività per Capistrano 3 che implica l'esecuzione di "installazione di compositore" all'interno della directory della versione corrente. Sembra qualcosa di simile:Capistrano 3 eseguito all'interno di una directory
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
si trova nel file di gestione temporanea e di produzione - nel mio caso particolare php /home/user/composer.phar
Per qualche ragione questo comando in realtà non eseguito nella directory versione corrente, ma invece viene eseguito in directory superiore (contenenti attuali, condivise, stampa, ecc)
ho approfondito questo un po 'più lontano e ha scoperto che quando mi sono imbattuto un unico comando parola, come:
within release_path do
execute "pwd"
end
Funziona perfettamente e esegue il comando nella directory di rilascio corrente. Ma ... quando esegue un comando con spazi, come:
within release_path do
execute "pwd && ls"
end
Si corre nella directory padre, e non la directory impostata dal blocco within
.
Qualcuno può far luce su questo? Grazie!
Ho sollevato un problema - https://github.com/capistrano/capistrano/issues/719 Si scopre che si tratta di un vincolo con SSHKit. Quindi vado con la tua soluzione - il vecchio capistrano 2 modo, per così dire. –
Questo non è un bug. È come funziona SSHKit. Vedi altre risposte. – gagarine
Tu rocce, grazie! –