Whenever, les tâches cron simplifiées pour Rails
Vous souhaitez mettre votre solution en avant en haut de cet article ? Contactez-nous
Nous vous présentons aujourd’hui Whenever, une gem qui permet de gérer ses crons par projets, et en Ruby.
Introduction
Un projet rails à généralement besoin de tâches qui se répètent dans un intervalle de temps. Faire des sauvegardes, mettre à jour des caches, lire des rss, …
Dans ce cas, on utilise généralement un cron, qui permet d’executer des commandes à une fréquence donnée, comme des tâches rake, par exemple. Le seul inconvénient est que quand on déploie son projet sur sa plateforme de production, il n’est pas simple de déployer ses tâches cron… sans whenever.
Installation
Whenever est une gem qui permet de créer ses tâches cron directement dans son projet rails, avec une syntaxe ruby très simple.
Vous trouverez son dépot github ici.
Pour l’installation, rien de compliqué, gem install whenever. Ensuite, il n’y a plus qu’à taper « wheneverize path/to/my/project/ », ce qui crée un « config/schedule.rb«
Configuration
La configuration de whenever se fait à partir du fichier schedule.rb.
exemple de schedule.rb
every 3.hours do runner "MyModel.some_process" rake "my:rake:task" command "/usr/bin/my_great_command" end every 1.day, :at => '4:30 am' do runner "MyModel.task_to_run_at_four_thirty_in_the_morning" end every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot runner "SomeModel.ladeeda" end every :sunday, :at => '12pm' do # Use any day of the week or :weekend, :weekday runner "Task.do_something_great" end every '0 0 27-31 * *' do command "echo 'you can use raw cron syntax too'" end
Au déploiement, il suffit d’une ligne pour ensuite mettre à jour ses crons: whenever –update-crontab
Les lignes relatives au projet sont à ce moment là ajoutées en bas, avec un commentaire précisant leur projet d’appartenance.