Der Cron-job nicht funktioniert, immer Wenn gem
Ich habe eine Anwendung, die enthält eine Reihe von Aufgaben, und jeden Tag möchte ich einen cron-job erstellt, die DayTask für jede Aufgabe in der Datenbank. Eine Aufgabe has_many DayTasks und diese daytasks sind, was die Benutzer checken jeden Tag Los. Ich bin mit dem, wenn gem aber es scheint nicht zu laufen. Irgendwelche Ideen?
config/Zeitplan.rb
every 1.day, :at => "12:01am" do
runner "Task.generate_tasks_for_day"
end
Aufgabe.rb
def generate_tasks_for_day
Task.all.each do |task|
task.day_tasks.create(:target_date => Date.today)
end
end
Ergebnis der Ausführung der "wenn-Befehl'
1 0 * * * /bin/bash -l -c 'cd /home/grant/rails_projects/GoalTwist && script/rails runner -e production '\''Task.generate_tasks_for_day'\'''
Hinweis: ich habe die Wechsel der Zeiten in config/Zeitplan.rb jedes mal, wenn ich will, um zu testen, führen Sie es.
InformationsquelleAutor der Frage Grant David Bachman | 2011-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Endlich habe ich gelöst, wie man das Juwel Wann auch immer.
Es ist eine gute Arbeit, die auf die Produktion, nicht aber in der Entwicklung Modus (ich denke, dass es für gute Arbeit im dev-Modus Sie müssen einige tricks).
Dann, diese Prozesse zu tun:
scheduler.rb
Dateissh
)whenever
whenever --update-crontab
sudo service cron restart
crontab -l
Das ist es!
Persönlich bevorzuge ich meine crons, die direkt von dem server:
crontab -e
0 5 * * * /bin/bash -l -c 'cd /path_to_my_app/current && RAILS_ENV=production bundle exec rake my_cron_rake'
crontab -l
InformationsquelleAutor der Antwort damoiser
Haben Sie, um tatsächlich registrieren die Jobs mit der crontab mit:
whenever --update-crontab
Auch wenn Sie versuchen, Arbeitsplätze zu erhalten lokal ausgeführt wird, hinzufügen
:environment => "development"
zu Ihrer Aufgaberunner "MyTask.some_action", :environment => "development"
InformationsquelleAutor der Antwort Graham T
Versuchen, auszuführen, wenn die generierten Befehl direkt vom terminal aus, oder fügen Sie die folgende Zeile
[email protected]
zu deiner crontab.
InformationsquelleAutor der Antwort Hugo