如何使用Sinatra应用程序在Heroku中运行cron作业

时间:2010-10-06 18:28:00

标签: ruby-on-rails ruby cron sinatra heroku

我正在写一个很小的Sinatra应用程序,为了简单起见,我想在Heroku上托管它。但是,我所拥有的是一个废弃一些网站并每小时向我的数据库中添加一些数据的任务。目前,这只是作为需要执行的ruby脚本编写的。 Heroku有一个rake based cron job。现在,如果这是一个rails应用程序,我可以很容易地做到这一点,但我想避免这种简单的混乱。

有没有办法避免这种情况?或者我是否必须使用我的应用程序安装rake?

谢谢。

埃里克

3 个答案:

答案 0 :(得分:11)

你需要一个Rakefile,如:

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

Heroku会定期在您的应用中执行rake cron,具体取决于您是否每小时或每天选择“cron加载项”。

答案 1 :(得分:3)

你需要查看Rufus。鲁弗斯是你的朋友。在您的应用程序加载时,Rufus将成为您的crontab。

我没有在Heroku上尝试这些东西,但试一试并回复我们。

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

为什么Rufus很酷?好吧,检查一下,它很干净:))

$ 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

答案 2 :(得分:1)

再看一遍,看起来我在问题上跳了枪。

对于非R​​ails的应用程序,只需创建一个Rakefile并将任务放在那里。

希望这有助于其他人。

干杯!