Я перемещаю приложение Rails для развертывания из Капистрано в Мину. Осталось только написать задачу для перезапуска сервера. Я уже сделал часть, чтобы запустить сервер, но я не могу понять, как остановить его.Есть ли способ получить результат выполнения команды на сервере в Мине?
Когда я использовал Capistrano, я имел следующую задачу:
desc 'Stop Unicorn'
task :stop do
on roles(:app) do
if test("[ -f #{fetch(:unicorn_pid)} ]")
execute :kill, capture(:cat, fetch(:unicorn_pid))
end
end
end
Это, как я понял, во-первых, работает test
команду, чтобы определить, существует ли файл, а затем запускается при необходимости команду убить. Я понимаю, как сделать все это в Мине, кроме как выполнить функцию test
на сервере и получить ее результат, чтобы что-то с ней сделать.
Вот что я использую в настоящее время,
task :restart_server => :environment do
queue "cd #{deploy_to}/current"
if File.exists? unicorn_pid
queue "kill `cat #{unicorn_pid}`"
end
queue "bundle exec unicorn -C#{deploy_to}/#{shared_path}/config/unicorn.rb -E production -D"
end
, но это не работает, и я думаю, что я понимаю, почему (потому что File.exists
строка выполняется на стороне клиента, а не на стороне сервера).
Итак, что мне делать?