Проверьте пример в документации, на которую вы снова ссылались:
God.watch do |w|
w.name = "simple"
w.start = "ruby /full/path/to/simple.rb"
w.keepalive
end
Вы используете относительный путь, а не полный путь. Если вы попытаетесь использовать относительный путь, он выдаст ошибку и скажет, что не может создать файл журнала там. Это заставит его проходить через старт / выход, как вы описали.
Кроме того, убедитесь, что после CTRL-C
процесса god
вы уничтожили фоновый ruby
процесс. Вы можете видеть, что даже после убийства god
он работает с ps aux | grep ruby
.
Наконец, puts
делает запись в файл журнала, но вывод буферизуется god
до тех пор, пока процесс ruby
для simple.rb
не будет завершен. Повторите этот процесс для подтверждения:
# Confirm no running ruby processes, otherwise kill the processes and re-verify
ps aux | grep ruby
# Start the daemon
god -c simple.god -D
Переключитесь на новую оболочку и запустите:
ps aux | grep ruby
foo 51279 0.0 0.1 4322084 11888 ?? Ss 12:46AM 0:00.09 ruby /Users/foo/simple.rb
foo 51241 0.0 0.2 4343944 26208 s000 S+ 12:46AM 0:00.45 ruby /Users/foo/.rvm/gems/ruby-2.6.0-preview2/bin/god -c simple.god -D
# Kill the process for simple.rb, which causes god to dump the output to the log and restart it
kill 51279
# Verify log file contains expected output
cat myprocess.log
Hello
Hello
Hello
Hello
Я рекомендую вам продолжить чтение документации для god
. Там много всего, и ответы на них есть.