У нас есть приложение elixir, которое зависит от сервера Tomcat. Наша текущая стратегия заключается в запуске файла .war
вызовом System.cmd
при запуске приложения. Это работает, но мы также хотели бы выключить сервер, если приложение (или, точнее, GenServer, выполняющий команду запуска) завершает работу. Как я могу поймать выход GenServer и запустить еще один вызов System.cmd
перед выходом?
Эликсир: остановить внешний системный процесс при завершении работы приложения
Ответы (1)
Что вам нужно сделать, так это реализовать обратный вызов terminate/2.
Здесь вы даже можете обрабатывать различные типы причин прекращения, такие как :normal
, :shutdown
или другие самостоятельно определенные причины. Все, что вам нужно, это следующее:
module MyServer do
use GenServer
# ...
def terminate(reason, state) do
# System call goes here
System.cmd "echo", ["I'll be back"]
end
end
person
Máté
schedule
10.07.2018