Как запустить работу cron в Heroku с помощью приложения Sinatra - PullRequest
5 голосов
/ 06 октября 2010

Я пишу крошечное приложение Sinatra и хочу разместить его на Heroku для простоты.Но у меня есть задача, которая удаляет некоторые сайты и добавляет некоторые данные в мою базу данных каждый час.В настоящее время это просто написано как скрипт ruby, который должен быть выполнен.У Heroku есть рейк-работа , основанная на рейке.Теперь, если бы это было приложение rails, я мог бы легко это сделать, но я хочу избежать беспорядка из-за чего-то такого простого.Или мне нужно также установить грабли с моим приложением?

Спасибо.

Эрик

Ответы [ 3 ]

11 голосов
/ 07 октября 2010

Вам нужен Rakefile, такой как:

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

Heroku периодически запускает рейк-крон в вашем приложении в зависимости от того, выбрал ли вы надстройку cron для ежечасного или ежедневного.

3 голосов
/ 07 октября 2010

Вам нужно проверить Руфуса.Руфус твой друг.Rufus будет вашим хронтабом, пока ваше приложение загружено.

Я не пробовал этот материал на Heroku, но попробуйте и ответьте нам.

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

Почему Руфус классный?Хорошо, проверьте это, это чисто:)

$ 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 голос
/ 06 октября 2010

Выглядело снова и похоже, что я бросил оружие по этому вопросу.

Для приложений, которые не являются Rails, нужно просто создать Rakefile и поставить задачу там.

Надеюсь, что это помогает другим людям.

Ура!

...