Qu’est-ce que Cron?
Cron est un système de planification de tâches disponible dans les systèmes d’exploitation Linux et MacOS.
Il peut être utilisé pour exécuter n’importe quel programme à un moment donné.
Si vous souhaitez exécuter une tâche récurrente spécifique tous les jours, toutes les semaines ou même toutes les heures, Cron est peut-être ce que vous recherchez.
Exemple de tâches:
– Exécuter une sauvegarde hebdomadaire de la base de données
– Générer un rapport quotidien de l’activité du site
– Envoi d’e-mails de rappel
Découvrez comment vous pouvez faire fonctionner cron !
Bases de Cron
Example cron job:
0 0 * * * /opt/rubies/ruby-2.5.1/bin/rake db:backup
La syntaxe peut être un peu délicate et vous ne voudrez peut-être pas éditer ces fichiers à la main tout le temps.
Y a-t-il des gems pour nous faciliter la tâche?
La reponse est Oui, le plus utilisé sous ruby on rails est: Whenever !
Comment utiliser le gem Whenever
Comme la syntaxe cron peut être difficile à retenir, nous pouvons utiliser un gem comme Whenever,
Ce gem vous aide à définir les tâches cron dans Ruby.
Installez le gem en premier, suivre ce lien
Ensuite, créez le fichier de configuration:
wheneverize . # [add] config/schedule.rb
Ouvrez-le.
Vous verrez des exemples commentés, supprimez-les si vous le souhaitez.
Disons que nous voulons un tâche de sauvegarde qui s’exécute toutes les heures.
Ecrivez ceci dans le fichier “config / schedule.rb”:
every 1.hour do rake "db:backup" end
Les options comprennent:
– rake (lance une tâche de rake définie sur votre projet actuel, notez que db: backup n’est pas défini par défaut, mais vous pouvez essayer db: version)
– runner (méthode Ruby classe +, comme Archive.backup_now)
– command (commande système)
À présent:
Exécutez la commande whenever –update-crontab pour générer les entrées cron.
Vous devriez pouvoir voir votre nouvelle entrée avec crontab -l
C’est ce que j’ai eu:
0 * * * * /bin/bash -l -c 'cd /home/jesus/testing && RAILS_ENV=production bundle exec rake db:backup --silent'
Notez que la tâche sera exécutée en mode de production.
Voulez-vous changer ça?
Vous pouvez utiliser ce paramètre:
set :environment, "development"
Pour cela va dans votre fichier config/schedule.rb, en haut.
Vous pouvez également utiliser cette commande:
whenever --update-crontab --set environment=development
Cela crée toutes les tâches avec «développement» comme environnement lorsque vous exécutez cette commande.
Plus d’exemples avec Whenever
Cet exemple montre comment vous pouvez être plus spécifique.
Tâche hebdomadaire:
every :monday, at: "6:00 PM" do runner "Mail.send_weekly_newsletter" end
Cet exemple montre comment exécuter la même tâche plusieurs fois au cours de la journée.
Exécuter la tâche deux fois par jour:
every :day, at: ["12:00 AM", "12:00 PM"] do command "rm tmp/testing.txt" end
Logging & Troubleshooting
Une fois que vous avez des tâches dans votre fichier crontab (vérifiez avec crontab -l), vous êtes prêt à partir.
Comment savoir si les tâches planifiées fonctionnent correctement?
Vous pouvez configurer la journalisation et lire le résultat.
Activez la journalisation en l’ajoutant en haut de votre fichier config/schedule.rb.
Configuration:
set :output, "log/cron.log"
N’oubliez pas de lancer la commande whenever –update-crontab à chaque fois que vous apportez des modifications!
LIRE AUSSI: Rails 5 : Comprendre la différence entre Scope et Namespace
Amonce DEMBELE
5 Comments