Joseph Le Brech
Joseph Le Brech

Reputation: 6653

Daemoninsing a rake task

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

Answers (4)

Deep Nirmal
Deep Nirmal

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

Guilherme Garnier
Guilherme Garnier

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

Maran
Maran

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

Shanison
Shanison

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

Related Questions