Я запускаю сервер Middleman (который использует Webrick) на JRuby внутри процесса JVM с использованием API org.jruby.embed.ScriptingContainer
.
Если я завершу работу и остановил сервер изнутри JVM, все будет работать так, как ожидалось.
Но если я отправлю SIGTERM в JVM-процесс (например, нажав Ctrl + C в командной строке), консоль вернется, но процесс JVM не завершится - он висит бесконечно, пока я не отправлю его SIGKILL.
Я попробовал зарегистрировать JVM-заглушку для завершения экземпляра ScriptingContainer
, но хук никогда не срабатывает. Я не знаю, почему... возможно, JRuby каким-то образом глотает SIGTERM?
Как я могу заставить JVM полностью закрыть путь, даже если он содержит запущенный сервер Webrick?