web-dev-qa-db-fra.com

Gemme "à chaque fois" exécutant des tâches cron sur Heroku

J'ai créé une application qui utilise la gemme à chaque fois. Le joyau crée des emplois cron. Je l'ai fait fonctionner localement, mais je n'arrive pas à le faire fonctionner sur le cèdre heroku. Quelle est la commande pour ce faire?

fonctionnement:

heroku run whenever --update-crontab job1

ne fonctionne pas

43
AdamT

Réponse courte: utilisez le module complémentaire du planificateur: http://addons.heroku.com/scheduler

Réponse longue: lorsque vous exécutez Heroku, nous

  1. faire tourner un dyno
  2. mettez votre code dessus
  3. exécutez votre commande, attendez qu'elle se termine
  4. jeter le dyno

Toute modification apportée à crontab serait immédiatement supprimée. Tout est éphémère, vous ne pouvez pas éditer de fichiers sur heroku, il suffit de pousser un nouveau code.

70
Will

Vous devez ajouter Heroku Scheduler addon.

Vous pouvez l'ajouter directement depuis votre tableau de bord ou en utilisant les commandes suivantes:

  1. installez le add-on:

    heroku addons:create scheduler:standard
    
  2. Créez une tâche de râteau dans lib/tasks

    # lib/tasks/scheduler.rake
    task :send_reminders => :environment do
      User.send_reminders
    end
    
  3. Planifier le travail

    • Visitez Tableau de bord Herok
    • Ouvrez votre app
    • Sélectionnez Scheduler from add-ons liste
    • Cliquez sur Ajouter un travail, entrez une tâche et sélectionnez la fréquence.

      par exemple. Ajouter rake send_reminders, sélectionnez "Daily" et "00:00" pour envoyer des rappels tous les jours à minuit.

Heroku add cron task

8
Deepak Mahakale