Il arrive que dans la vie d’un projet on ait besoin d’exécuter certaines tâches de manières récurrentes (export/import de données, suppression de vieux comptes, envoi de mail, …).
Sous Linux, la méthode la plus simple est d’utiliser l’utilitaire cron : il nous permet de lancer commandes, et scripts à une date et une heure précise et/ou de manière récurrente.
Exemples.
1 2 3 4 5 |
# s'exécute tous les jours à 23h30 30 23 * * * df >> /tmp/df.log # s'exécute toutes les 5 minutes */5 * * * * my-script.sh |
Donc si on veut mettre en place les tâches récurrentes de notre projet Rails, il nous suffit de :
- nous connecter sur le serveur
- modifier la crontab pour y inclure nos nouvelles tâches
cron est un utilitaire réputé, il existe donc de très nombreuses ressources pour apprendre à l’utiliser. Mais il y a plusieurs choses qui me gênent :
- la syntaxe cron pour définir les heures et la récurrence est parfois dure à relire (ex. 0 0 25-31 1,3,5,7,8,10,12 0 my-script.sh )
- la modification de la crontab peut avoir un impact global pas forcément prévu
- on ne peut pas connaître l’ensemble des tâches récurrentes d’un projet
- le fait de devoir aller sur le serveur pour mettre à jour la crontab, oblige à le faire sur chaque machine sur laquelle l’application est déployée, il peut donc y avoir des oublis
C’est pourquoi j’ai pris l’habitude d’utiliser la gem Whenever pour gérer les tâches récurrentes de mes projets Rails
Continuer la lecture de « Ruby On Rails – Des tâches récurrentes simples avec Whenever »