Ik gebruik Whenever 0.7.3, Rails 3.2.2, Ruby 1.9.3, Passenger 3.0.11 op een CentOS 5.6 server (gebruik geen rvm). Probleem is dat de cron jobs gemaakt door whenever volgens de logs worden uitgevoerd, maar ik zie de resultaten niet terug in de database. Als ik de gegenereerde code kopieer en via ssh op de server loslaat gebeurt alles wel zoals verwacht, dus hoe kan het dat het als ingeplande cron-job niet werkt?
De code die de cron job moet aanspreken:
schedule.rb (whenever):
De gegenereerde cron-job (output crontab -l):
De volgende ochtend vind ik het volgende in de cron-log:
Echter er is dan dus niets gebeurt in de database, de code lijkt niet uitgevoerd. Als ik de cronjob kopieer (/bin/bash -l -c 'cd ... 2>&1') en via ssh op de server los laat werkt alles wel
Overigens zie ik in het cron-log soms deze melding staan, echter niet bij elke uitgevoerde cron en als er meerdere achter elkaar worden uitgevoerd verschijnt het slechts 1x:
Weet iemand hier hoe het kan dat het niet lijkt te werken via de Cron-job, maar wel als ik exact dezelfde functie handmatig aanspreek? Ik snap zelf niet wat hier nu precies mis gaat.
De code die de cron job moet aanspreken:
code:
1
2
3
4
5
6
7
| class SomeModel < ActiveRecord::Base #Delete all items that haven't been updated for 2 hours or more def self.cron_job SomeModel.destroy_all(updated_at < ?", 2.hours.ago]) end end |
schedule.rb (whenever):
code:
1
2
3
4
5
| set :output, "/var/log/cron" every 1.day, :at => '4:45 am' do runner "SomeModel.cron_job" end |
De gegenereerde cron-job (output crontab -l):
code:
1
2
3
| # Begin Whenever generated tasks for: site_name 45 4 * * * /bin/bash -l -c 'cd /home/user/domains/site_name && script/rails runner -e production '\''SomeModel.cron_job'\'' >> /var/log/cron 2>&1' # End Whenever generated tasks for: site_name |
De volgende ochtend vind ik het volgende in de cron-log:
code:
1
| Apr 14 04:45:01 node1 crond[9155]: (root) CMD (/bin/bash -l -c 'cd /home/user/domains/site_name && script/rails runner -e production '\''SomeModel.cron_job'\'' >> /var/log/cron 2>&1') |
Echter er is dan dus niets gebeurt in de database, de code lijkt niet uitgevoerd. Als ik de cronjob kopieer (/bin/bash -l -c 'cd ... 2>&1') en via ssh op de server los laat werkt alles wel
Overigens zie ik in het cron-log soms deze melding staan, echter niet bij elke uitgevoerde cron en als er meerdere achter elkaar worden uitgevoerd verschijnt het slechts 1x:
code:
1
2
3
4
| from script/rails:5:in `require' from script/rails:5 from script/rails:5:in `require' from script/rails:5 |
Weet iemand hier hoe het kan dat het niet lijkt te werken via de Cron-job, maar wel als ik exact dezelfde functie handmatig aanspreek? Ik snap zelf niet wat hier nu precies mis gaat.