I have a rake task which runs mailman under the rails environment.
I'd like to ensure that rake task is always running via a daemon.
My rake task is rake incoming_mail
How would I go about daemonising that?
I have a rake task which runs mailman under the rails environment.
I'd like to ensure that rake task is always running via a daemon.
My rake task is rake incoming_mail
How would I go about daemonising that?
If you are on linux you could consider using 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"
To later gracefully kill the process you can use most of the arguments but replace -S with -K.
As always you can find more information on start-stop-daemon by reading the man pages.
In linux in order to run a process in background, you can add & to the end of command. So
rake incoming_mail &
should probably do the jobs for you.
If you are on linux you could consider using 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"
To later gracefully kill the process you can use most of the arguments but replace -S with -K.
As always you can find more information on start-stop-daemon by reading the man pages.
If you use Ruby 1.9+, you could use Process.daemon. There's also a solution for Ruby < 1.9: http://www.jstorimer.com/blogs/workingwithcode/7766093-daemon-processes-in-ruby
If it's a docker image then surely it must be linux so,
rake incoming_mail &
should do the job by login into the pod and running rake task
Apart from this, put
Rails.logger.info
in your code so the logs will be pushed to application log file OR
GCloud Stackdriver or any logging framework.
© 2022 - 2024 — McMap. All rights reserved.
daemon stop
anddaemon start
– Aught