whenever gem

Hello All,

I want to schedule a mail every day.

I used whenever gem.

I added gem ‘whenever’ in my gemfile. Then in the terminal I did - “whenever .” which created a schedule.rb.

In schedule.rd I added this piece of code:-

set :environment, “development”

every 2.minutes do

runner “UserMailer.some_method”

end

Does it get invoked automatically ?

or do I need to do something to invoke it?

Thanks,

Avi

use

**whenever -w **

to write into system crontab ; to check if write successfully try **crontab -l **

whenever -c to clear

I tried with these commands. It is fine. But the schedule.rb is not being invoked.

I tried with some puts inside the method, but it is not getting invoked.

result of whenever -w -> [write] crontab file written

result of crontab -l :-

Begin Whenever generated tasks for: the complete path/schedule.rb

0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * /bin/bash -l -c ‘cd “the complete path” && script/rails runner -e development ‘’‘UserMailer.some_method’’’’

End Whenever generated tasks for: the complete path/schedule.rb

How about write out to some file as you might can not see these PUTS

I tried with that…

But i am getting error - (CRON) info (No MTA installed, discarding output)

any pointers ?

I tried with that...
But i am getting error - (CRON) info (No MTA installed, discarding output)
any pointers ?

This is because the normal behavior for cron is to send the combined STDOUT and STDERR to the owner of the crontab as an e-mail message. You don't have anything that can accept and deliver e-mail on your server (or whatever is running cron) as it cannot find the MTA (Mail Transfer Agent) and so is telling you it's just dropping the output of the command in the bit bucket. This has absolutely nothing to do with the whenever gem, ruby, rails or anything else. This is a base OS-level issue. If you want the output of the cron command, you have a couple of choices:

1) Append it to a log file the cron job has write access to.
2) Install a mail transfer agent.

#1 is by far the easier of the two. If cron is running as root, Just append '>> /var/log/cron.log 2>&1' (without quotes) to each crontab command. If cron is running as a regular user, append '>> $HOME/.cron.log 2>&1'.