Reputation: 6653
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?
Upvotes: 5
Views: 6615
Reputation: 1251
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.
Upvotes: 0
Reputation: 2257
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
Upvotes: 0
Reputation: 2736
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.
Upvotes: 3
Reputation: 2295
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.
Upvotes: 4