как мешать sinatra работать?

Если ruby myapp.rb запускает sinatra, предварительно просматривающий в localhost:4567, как я могу программно остановить/остановить/уничтожить его? Терминальная команда (кроме Ctrl-C), или задачи Граблей была бы прекрасна.

Я должен включить это в задачу Граблей или терминал.

14
задан Nakilon 15 March 2017 в 17:57
поделиться

1 ответ

В myapp.rb добавьте это перед запуском sinatra:

puts "This is process #{Process.pid}"

Если вы хотите убить его, сделайте это в оболочке:

kill <pid>

Где - это число, выводимое myapp. руб. Если вы хотите сделать это в ruby:

Process.kill 'TERM', <pid>

Оба они позволят sinatra выполнить свою процедуру выхода. Если вы не хотите каждый раз вводить pid, пусть myapp.rb открывает файл и помещает в него pid. Затем, когда вы захотите остановить это, прочтите файл и используйте его. Пример:

# myapp.rb:
File.open('myapp.pid', 'w') {|f| f.write Process.pid }

# shell:
kill `cat myapp.pid`

# ruby:
Process.kill 'TERM', File.read('myapp.pid')
21
ответ дан 1 December 2019 в 07:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: