2010-10-06 10 views
5

Sto scrivendo una piccola app Sinatra, e voglio ospitarlo su Heroku per semplicità. Ma quello che ho è un compito che ritaglia alcuni siti e aggiunge alcuni dati nel mio database ogni ora. Attualmente questo è solo scritto come uno script ruby ​​che deve essere eseguito. Quello che Heroku ha è un rake based cron job. Ora, se questa fosse un'app per rails, potrei facilmente farlo, ma voglio evitare la confusione per qualcosa di così semplice.Come eseguire un cron job in Heroku, con un'app Sinatra

C'è un modo per evitare questo? O devo installare rake con la mia app?

Grazie.

Eric

risposta

10

Hai bisogno di un Rakefile come:

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

Heroku esegue periodicamente rake cron nella vostra applicazione a seconda se è stata selezionata la "cron add-on" essere orario o giornaliero.

1

guardò di nuovo e si presenta come ho saltato la pistola sulla questione.

Per applicazioni che non sono Rails, è sufficiente creare un Rakefile e inserire l'attività lì.

Spero che questo aiuti le altre persone.

Cheers!

3

È necessario controllare Rufus. Rufus è tuo amico. Rufus sarà il tuo crontab mentre la tua app è caricata.

Non ho provato questa roba su Heroku, ma provaci e rispondi a noi.

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

Perché Rufus è cool? Bene controllare questo fuori, è pulito :)

$ 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

Sembra buono. Sfortunatamente Heroku non supporta ancora la gemma Rufus. –

+1

autch! Forse http://github.com/javan/qualunque forse non supportano nessuna di quelle relative al loro componente aggiuntivo "cron" a pagamento: / – include