Куда я помещаю повторяющийся скрипт, который обновляет базу данных из API в рельсах - PullRequest
0 голосов
/ 25 мая 2018

У меня есть приложение Rails, настроенное с модельной учетной записью, которая должна обновляться каждое утро с данными, поступающими из внешнего API, которым я звоню (CRM).Обычно я создаю новые учетные записи в своем приложении, которые я нахожу в CRM, и некоторые поля, сопоставленные с моими столбцами, либо я нахожу учетную запись, если она уже существует, и обновляю ее.

До сих пор я помещал этот код в файл seeds.rb и из Heroku, где размещено приложение, я настроил планировщик с помощью команды: rails db:seed, которая запускается периодически.

Моя проблема в том, что я уверен, что есть лучший способ сделать это.Я читал о рейк-задачах, но я не совсем понял, как это применимо к моему делу.В противном случае я решил поместить свой метод в файл models/account.rb как собственный метод.Но я действительно не знаю, как я могу вызвать его в команде rake, чтобы позволить мне настроить планировщик в Heroku.

Любая идея о том, где было бы лучше всего разместить этот метод, и каквызывать это из командной строки?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Я бы предложил использовать фоновый процессор, такой как Sidekiq: https://github.com/mperham/sidekiq

. Чтобы использовать Sidekiq, вам нужен планировщик, такой как https://github.com/moove-it/sidekiq-scheduler, чтобы он периодически выполнялся по мере необходимости.

Это станет легче поддерживать по мере роста вашего приложения, и вам потребуется больше работников .Это также перемещает ваше планирование в управление версиями.

0 голосов
/ 25 мая 2018

Вы можете создать каталог script в своем проекте и поместить свой скрипт из db/seeds.rb в этот каталог, возможно, с именем update_accounts.rb.Затем вы можете запустить его с

rails runner script/update_accounts.rb

и запланировать это задание в героку.Больше информации о рельсах здесь .

...