2010-10-06 18 views
5

Küçük bir Sinatra uygulaması yazıyorum ve basitlik uğruna Heroku adresinde barındırmak istiyorum. Ancak, sahip olduğum şey bazı siteleri kazıyan ve veritabanına her saat veri ekleyen bir görev. Şu anda bu sadece yürütülmesi gereken bir ruby ​​script olarak yazılmıştır. Heroku'nun sahip olduğu bir rake based cron job. Şimdi bu bir ray uygulaması olsaydı, bunu kolayca yapabilirdim, ama bu kadar basit bir şey için dağınıklığı önlemek istiyorum.Bir Sinatra uygulaması ile Heroku'da bir cron işi nasıl çalıştırılır

Bundan kaçınmanın bir yolu var mı? Ya da benim uygulama ile komisyonu da yüklemem gerekiyor mu?

Teşekkür ederiz.

Eric

cevap

10

Sen gibi bir Rakefile gerekir:

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

Heroku periyodik seçtiğiniz bağlı olarak uygulamanızda tırmık cron'u yürütür "cron Add-on" saatlik veya günlük olmak.

1

tekrar baktım ve ben soru üzerine ateşe attım benziyor.

Raylar olmayan uygulamalar için, sadece bir Rakefile oluşturmak ve görevi buraya koymak gerekir. Umarım bu diğer insanlara yardımcı olur umarım.

Şerefe!

3

Rufus'u kontrol etmeniz gerekiyor. Rufus senin arkadaşın. Uygulamanız yüklenirken Rufus sizin crontabınız olacaktır.

Bu şeyi Heroku'da denemedim, ama bir deneyin ve bize cevap verin.

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

Neden Rufus cool? Eh bu check out, temiz :)

$ 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

Çok iyi görünüyor. Ne yazık ki Heroku, Rufus gemini henüz desteklemiyor. –

+1

autch! Belki de http://github.com/javan/whenever belki de ödedikleri "cron" eklentileri ile ilgili herhangi birini desteklemiyorlar: / – include

İlgili konular