2010-10-06 15 views
5

Piszę małą aplikację Sinatra i chcę ją hostować na Heroku dla prostoty sake. Ale to, co mam, to zadanie, które wyłapuje niektóre witryny i dodaje co godzinę dane do mojej bazy danych. Obecnie jest to po prostu napisane jako skrypt ruby, który musi zostać wykonany. To, co ma Heroku, to rake based cron job. Teraz, jeśli to była aplikacja szyny, mógłbym to łatwo zrobić, ale chcę uniknąć bałaganu, aby uzyskać coś tak prostego, jak to.Jak uruchomić zadanie cron w Heroku, z aplikacją Sinatra

Czy można tego uniknąć? Czy muszę też instalować rake z moją aplikacją?

Dziękuję.

Eric

Odpowiedz

10

Musisz Rakefile jak:

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

Heroku okresowo wykonuje natarcia crona w swojej aplikacji w zależności od tego, czy wybrano "cron add-on" być godzinowe lub codzienne.

1

Spojrzał jeszcze raz i wygląda Skoczyłem pistolet na to pytanie.

W przypadku aplikacji, które nie są Railsami, wystarczy utworzyć Rakefile i umieścić tam zadanie.

Mam nadzieję, że to pomaga innym ludziom.

Pozdrawiam!

3

Musisz sprawdzić Rufusa. Rufus jest twoim przyjacielem. Rufus będzie twoim crontabem podczas ładowania aplikacji.

Nie próbowałem tego na Heroku, ale spróbuj i odpowiedz na nas.

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

Dlaczego Rufus jest cool? No to sprawdzić, to czysty :)

$ 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

Wygląda dobrze. Niestety Heroku nie obsługuje jeszcze klejnotu Rufusa. –

+1

autch! Może http://github.com/javan/whenever z być może nie obsługują żadnego z nich odnośnie do ich płatnego dodatku "cron": / – include

Powiązane problemy