Heroku Cron не запускается

Итак, я запускаю простую задачу cron на героку. Однако это не работает. Я продолжаю получать это в журнале:

2011-06-15T03:21:35+00:00 heroku[web.1]: State changed from up to bouncing
2011-06-15T03:21:35+00:00 heroku[web.1]: State changed from created to starting
2011-06-15T03:21:35+00:00 heroku[slugc]: Slug compilation finished
2011-06-15T03:21:41+00:00 heroku[web.1]: Starting process with command: `thin -p 5926 -e production -R /home/heroku_rack/heroku.ru start`
2011-06-15T03:21:46+00:00 app[web.1]: >> Thin web server (v1.2.6 codename Crazy Delicious)
2011-06-15T03:21:46+00:00 app[web.1]: >> Maximum connections set to 1024
2011-06-15T03:21:46+00:00 app[web.1]: >> Listening on 0.0.0.0:5926, CTRL+C to stop
2011-06-15T03:21:47+00:00 heroku[web.1]: State changed from starting to up
2011-06-15T03:22:30+00:00 heroku[web.1]: Stopping process with SIGTERM
2011-06-15T03:22:30+00:00 app[web.1]: >> Stopping ...
2011-06-15T03:22:30+00:00 heroku[web.1]: Process exited

Мой файл cron.rake (просто ставит каждые 4 часа)

 desc "This task is called by the Heroku cron add-on"
 task :cron => :environment do
   if Time.now.hour % 4 == 0 # run every four hours
     puts "Sending email of most popular post."
     puts "done."
   end
 end

Не уверен, почему бы просто не сделать путы. Кроме того, как только это сработает, я хочу время от времени вызывать функции из своих моделей. Если бы моя модель была Micropost, а функция была has_fun, мог бы я вызвать ее с... Micropost.has_fun в cron.rake?

Любая помощь будет более чем оценена. Люди, занимающиеся переполнением стека, оказали мне невероятную помощь в изучении рельсов. Еще раз спасибо.

Обновление: я изменил путы на:

UserMailer.registration_confirmation().deliver

Однако это приводит к тому же выходу журнала. Я несколько раз тестировал электронные письма с подтверждением регистрации с помощью actionmailer, и они работают с вышеуказанной функцией. (электронная почта закодирована как статическая в файле user_mailer.rb.


person chris    schedule 15.06.2011    source источник
comment
Спасибо, Му, да, я добавил надстройку cron в свое приложение heroku.   -  person chris    schedule 15.06.2011
comment
мне тоже кажется нормально. из лога не понятно как показано время там 3 и будет работать на 4, 8, 12, 16, 20 и 0   -  person Salil    schedule 15.06.2011
comment
Я думал, что крон запускается сразу, а затем каждые 4 часа в этом случае. Поэтому он должен запускаться сразу после установки надстройки cron. Я добавил обновление выше. Я попытался отправить электронное письмо с проверенным электронным письмом в actionmailer, но это приводит к тому же журналу. Я могу ошибаться насчет часов. Пожалуйста, дай мне знать! Еще раз спасибо.   -  person chris    schedule 15.06.2011
comment
информация heroku через интерфейс командной строки покажет вам время последнего выполнения и время следующего выполнения заданий cron.   -  person John Beynon    schedule 15.06.2011


Ответы (2)


Вы должны попробовать планировщик rufus:

Установите драгоценный камень

 gem install rufus-scheduler

Убедитесь, что вы включили драгоценный камень в сборщик или каким-либо другим способом.

Затем вам нужно создать файл с именем task_scheduler.rb и поместить его в каталог initializers.

 require 'rufus/scheduler'
 scheduler = Rufus::Scheduler.start_new

 scheduler.every '10m' do

      puts "Test!"      
      #do something here

 end

Если у вас возникли проблемы, вы можете увидеть это сообщение в блоге:

http://intridea.com/2009/2/13/dead-simple-task-scheduling-in-rails?blog=company

person thenengah    schedule 13.07.2011

Thoughtbot не так давно сделал запись в блоге, описывая метод локально протестируйте задания Heroku cron, используя RSpec, Timecop и Bourne.

person ezkl    schedule 13.07.2011