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