2010-10-06 15 views
5

J'écris une petite application Sinatra, et je veux l'héberger sur Heroku par souci de simplicité. Mais, ce que j'ai est une tâche qui efface certains sites et ajoute des données dans ma base de données toutes les heures. Actuellement, ceci est juste écrit comme un script ruby ​​qui doit être exécuté. Ce que Heroku a est un rake based cron job. Maintenant, si c'était une application rails, je pourrais facilement le faire, mais je veux éviter le fouillis pour quelque chose d'aussi simple que cela.Comment exécuter un travail cron dans Heroku, avec une application Sinatra

Y at-il un moyen d'éviter cela? Ou dois-je aussi installer rake avec mon application?

Merci.

Eric

Répondre

10

Vous avez besoin d'une Rakefile comme:

desc "This task is called by the Heroku cron add-on" 
task :cron do 
# Do something 
end 

Heroku exécute périodiquement Cron de coupe dans votre application selon que vous avez sélectionné le "Cron add-on" être horaire ou quotidien.

1

regardé à nouveau et semble que je sautais le pistolet sur la question.

Pour les applications qui ne sont pas des Rails, il suffit de créer un Rakefile et d'y placer la tâche.

Espérons que cela aide d'autres personnes.

À la votre!

3

Vous devez jeter un coup d'œil à Rufus. Rufus est ton ami. Rufus sera votre crontab pendant que votre application est chargée.

Je n'ai pas essayé ce genre de choses sur Heroku mais, essayez-le et répondez-nous.

http://codex.heroku.com/past/2010/4/15/rufus_scheduler_for_my_tiny_sinatra_apps/

Pourquoi Rufus est cool? Eh bien vérifier cela, il est propre :)

$ sudo gem install rufus-scheduler 

require 'rubygems' 
require 'rufus/scheduler' 

scheduler = Rufus::Scheduler.start_new 

scheduler.cron '00 23 30 * *' do 
    # Run every 30 days at 23h00m 
    # ...your magic code goes here... 
end 
+1

Apparemment, bon. Malheureusement Heroku ne supporte pas encore la gemme Rufus. –

+1

autch! Peut-être http://github.com/javan/whenever de peut-être qu'ils ne supportent aucun d'eux en ce qui concerne leur add-on "cron" payé: / – include