Ruby on Rails ubuntu

Comment programmer des tâches Cron en Ruby On Rails ?

Partagez sur:

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


Partagez sur: