Как настроить надстройку планировщика в Heroku - PullRequest
0 голосов
/ 31 декабря 2011

Я привык из PHP настраивать CRON на URL-адресе, который я хочу запускать автоматически через промежуток времени.

Теперь я пытаюсь настроить дополнение Schedular на Heroku, и у меня возникает небольшая проблема - я создал файл lib/tasks/scheduler.rake и в разделе администратора на Heroku настроил все, что возможно, но :

Я немного запутался, как все это работает - например, эти строки в lib/tasks/scheduler.rake:

desc "This task is called by the Heroku scheduler add-on"
task :update_feed => :environment do
    puts "Updating feed..."
    NewsFeed.update
    puts "done."
end

task :send_reminders => :environment do
    User.send_reminders
end

Что означает задача task: update_feed ? В установленный час будет запущено это действие? Но это действие в каком контроллере? Например, что если мне нужно будет каждый день запускать действие my_action в контроллере home? Я должен установить там снова только my_action вместо update_feed?

1 Ответ

2 голосов
/ 31 декабря 2011

С помощью cron для вызова http-действия, такого как curl или wget, вы планируете http-запрос, а затем http-запрос приводит к выполнению действия php, и в коде этого действия у вас есть некоторая работа / логика, которая происходит.

С помощью планировщика heroku вы пропускаете все HTTP-запросы и действия и можете напрямую поместить логику / работу в задачу rake (или поместить ее в обычный класс или модель ruby ​​и вызвать ее из тела задачи). .

Это работает, потому что задача rake загружает всю среду rails (это делает часть зависимости от среды определения задачи), поэтому внутри тела задачи rake у вас есть доступ к моделям приложений rails, требуемым гемам, приложению конфигурация, все - как внутри контроллера или модели в рельсах.

Что также хорошо, если вы находитесь на кедре, так это то, что планировщик вызывает задачи в одноразовом экземпляре динамо, поэтому основное динамо вашего приложения не занято задачей, запускаемой планировщиком, что не так, когда вы используйте шаблон действий cron -> http request -> controller.

Если вы расскажете мне больше о том, что вы пытаетесь сделать, я могу дать более конкретный совет, но в целом у меня обычно есть логика задачи, определенная в простом рубиновом классе в каталоге lib или как метод класса в модель, и это то, что будет вызываться из тела задачи (как в приведенном выше примере кода).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...