Question

J'ai un ruby on rails application (1.9.2 et 3.2) en cours d'exécution sur Heroku avec Redis/Resque qui nécessite une tâche rake être placés à intervalles réguliers.Droit maintenant, je suis en cours d'exécution 'heroku exécuter râteau update_listings" de ma machine locale une fois ou deux fois par jour....Je voudrais automatiser cela.J'ai essayé à chaque fois que gem, mais la tâche n'allait pas commencer à l'arrière.Heroku planificateur semble être la solution la plus appropriée, mais je suis confus par le planificateur.rb fichier.J'ai:

desc "This task is called by the Heroku scheduler add-on"
task :hourly_feed => :environment do
  Rake::Task[update_listings].execute
end

Quand j'ai couru le :hourly_feed tâche à partir de la Heroku Planificateur de la console et vérifié heroku les journaux, j'ai vu plusieurs web des dynamomètres obtenir filé par hirefireapp, mais le update_listings tâche rake n'a jamais été invoquée.

Mise à jour:J'ai renoncé à resque_scheduler.Je suis trop vert pour faire ce travail, alors essayer d'utiliser crontab et un sript de fichier.Voici mon update.sh fichier de script:

Rake::Task["update_listings"].execute

- Je configurer cron à l'aide de la commande " crontab-e et je l'ai exécuté toutes les 5 minutes, mais j'obtiens une erreur dans les journaux de messagerie:

Projects/livebytransit/update.sh: line 1: Rake::Task[update_listings].execute: command not found

Il apparaît, il est de trouver mon update.sh fichier de script et de le lire, mais il n'est pas l'exécution du code.J'ai remarqué l'entrée de journal a chuté de la cite, donc j'ai aussi essayé d'utiliser des guillemets simples dans le fichier script shell, pas de changement.J'ai aussi essayé de changer les update.sh pour cela:

heroku run rake update_listings

l'erreur est revenue heroku: command not found

Était-ce utile?

La solution 2

Il s'avère que la Heroku Planificateur fonctionne parfaitement...j'ai tout simplement oublié les guillemets autour de "mise à jour des listes".

Autres conseils

Personnellement, j'ai utilisé resque_scheduler, qui créeront des emplois pour les resque / redis file d'attente à l'aide de cron.

resque_schedule.yml

count_delayed_jobs_job:
 cron: "0 */1 * * *"
 class: Support::CountDelayedJobsResque
 queue: CDJ
 args: 
 description: "count_delayed_jobs_job, every 1hr"

alternativement, vous pouvez simplement chuck Rake::Task["update_listings"].execute dans un script shell, et utiliser crontab pour déclencher le travail.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top