1
Сейчас, после того, как загружены все мои исполняемый работает мое приложение, как это:Синатра запустить как демон программно
Rack::Handler::pick(['puma']).run VCK::App
и он работает, но он блокирует терминал (который хорошо для развития)
Как мне заставить это запускать как демон программным способом из моего исполняемого файла?
EDIT:
кода я использую, чтобы начать Синатр как демон:
if options[:daemonize]
pid = fork {Rack::Handler::pick(['puma']).run VCK::App}
File.open(pid_file_loc, 'w') {|f| f.write(pid)}
Process.detach(pid)
else
Rack::Handler::pick(['puma']).run VCK::App
end
код, я использую, чтобы остановить Синатры Daemon:
Process.kill(15, File.read(pid_file_loc).to_i)
Это не демон, это всего лишь процесс r unning в фоновом режиме со стандартным выходом/ошибкой, идущим на консоль. И как только оболочка будет закрыта, сеансы получат сигнал HUP и закрывают рубиновый процесс. По крайней мере, нужно сделать что-то вроде «nohup ruby server.rb> /var/tmp/server.out 2> & 1 &", чтобы предотвратить закрытие процесса по сигналу зависания. –