Icone_actu Actu Icone_creative Creative Icone_bdw Blog Du Webdesign Icone_emploi Emploi BDW

Whenever, les tâches cron simplifiées pour Rails

by SANCHEZ Benjamin - le 05/01/2012

  • Partager l'article en 1 clic !

    N'hésitez pas à aider le BlogDuWebdesign
  • 0

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.

Devenez membre !

Rejoignez la communauté des créatifs du web !
- Partagez vos créations
- Gagnez en visibilité
- Créez votre blog facilement
> En savoir plus

Créer mon compte
  • Partager l'article en 1 clic !

    N'hésitez pas à aider le BlogDuWebdesign
  • 0
2 Auteur : SANCHEZ Benjamin voir son blog

Développeur autodidacte depuis quelques années, déjà, je suis le développeur du blog du webdesign, où mon rôle est de concretiser les différentes idées et maquettes.

1commentaire

  • Af85720da64fe8d6484f52c7ca3ed3e3
    Matthieu

    le 05/01/12| #1

    Merci pour cet article, whenever est effectivement très pratique :)

    Nous avons rencontré pas mal de problèmes avec les tâches rake lorsque RVM était installé en production (de mémoire pas de soucis avec rbenv). Nous avons réglé ça en ajoutant cette ligne dans schedule.rb :
    set :job_template, "bash -l -c 'source ~/.rvm/scripts/rvm && :job'"

    Sauf erreur, l'utilisation du runner permet d'économiser pas mal de ressources car l'environnement Rails n'est pas chargé entièrement à chaque fois.

Ecrire un commentaire