Próbuję napisać zadanie dla Capistrano 3, które polega na wykonaniu "instalacji kompozytora" w katalogu aktualnej wersji. Wygląda to mniej więcej tak:Wykonanie Capistrano 3 w katalogu
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
jest ustawiony w plikach postoju i produkcji - w moim przypadku do php /home/user/composer.phar
Z jakiegoś powodu ta komenda nie faktycznie uruchomić w katalogu bieżącego wydania, ale zamiast przebiega w katalogu nadrzędnego (zawierające aktualne, dzielone, komunikaty, itp)
i zagłębił się to nieco dalej i stwierdził, że kiedy zabrakło jednego polecenia słowo, np:
within release_path do
execute "pwd"
end
Działa dobrze, i uruchamia polecenie w bieżącym katalogu wydania. Ale ... kiedy uruchomić polecenie z pomieszczeń, jak:
within release_path do
execute "pwd && ls"
end
biegnie w katalogu nadrzędnego, a nie katalogu określonego przez blok within
.
Czy ktoś może rzucić trochę światła na to? Dzięki!
Podniosłem problem - https://github.com/capistrano/capistrano/issues/719 Okazuje się, że jest to ograniczenie z SSHKit. Więc pójdę z twoim rozwiązaniem - starym capistrano 2 way, jak to było. –
To nie jest błąd. Tak działa SSHKit. Zobacz inne odpowiedzi. – gagarine
Skały, dzięki! –