Демонстрация граблей - PullRequest
5 голосов
/ 04 марта 2012

У меня есть задача rake, которая запускает почтальона в среде rails.

Я хочу убедиться, что задача rake всегда выполняется через демона.

Моя задача rake rake incoming_mail

Как бы я мог это демонизировать?

Ответы [ 4 ]

4 голосов
/ 04 марта 2012

В linux, чтобы запустить процесс в фоновом режиме, вы можете добавить & в конец команды. Так

рейк входящей почты &

, вероятно, должен выполнить работу за вас.

3 голосов
/ 04 марта 2012

Если вы используете Linux, вы можете использовать start-stop-daemon.

start-stop-daemon -S --pidfile /var/run/incoming_mail.pid -u rails_user -d /path/to/your/rails/app -b -a "rake incoming_mail"

Чтобы потом изящно убить процесс, вы можете использовать большинство аргументов, но заменить -S на -K.

Как всегда, вы можете найти больше информации о start-stop-daemon, прочитав справочные страницы.

0 голосов
/ 08 марта 2019

Если это образ докера, то, безусловно, это должен быть linux, поэтому

rake incoming_mail &

должен выполнить работу, войдя в модуль и запустив задачу rake

Кроме этого, поставьте

Rails.logger.info в вашем коде, поэтому журналы будут помещены в файл журнала приложения ИЛИ

GCloud Stackdriver или в любую среду ведения журналов.

0 голосов
/ 22 мая 2013

Если вы используете Ruby 1.9+, вы можете использовать Process.daemon .Также есть решение для Ruby <1.9: <a href="http://www.jstorimer.com/blogs/workingwithcode/7766093-daemon-processes-in-ruby" rel="nofollow">http://www.jstorimer.com/blogs/workingwithcode/7766093-daemon-processes-in-ruby

...