我在哪里放置从 api 到 rails 更新数据库的循环脚本
Where do I put a recurring script that updates database from api in rails
我有一个 Rails 应用程序设置了一个模型帐户,该帐户应该每天早上使用来自外部 API 我正在呼叫(CRM)的数据进行更新。基本上,要么我在我的应用程序中创建我在 CRM 中找到的新帐户以及一些与我的列映射的字段,要么我找到该帐户(如果它已经存在)并更新它。
到目前为止,我一直将此代码放入 seeds.rb
文件中,并从托管该应用程序的 Heroku 中设置一个调度程序,其中包含以下命令:定期运行的 rails db:seed
.
我的问题是,我确定有更好的方法可以做到这一点。我读过有关 rake tasks 的内容,但我不太明白它如何适用于我的案例。否则我想把我的方法作为一个 self 方法放在 models/account.rb
文件中。但我真的不知道如何在 rake 命令中调用它以允许我在 Heroku 中设置调度程序。
知道放置此方法的最佳位置以及如何从命令行调用它吗?
提前致谢。
您可以在您的项目中创建一个script
目录,并将您的脚本从db/seeds.rb
放入该目录,可能名为update_accounts.rb
。然后你可以 运行 它与
rails runner script/update_accounts.rb
并在 heroku 中安排该任务。有关 rails runner here.
的更多信息
我建议使用 Sidekiq 等后台处理器:https://github.com/mperham/sidekiq
使用 Sidekiq 后,您需要一个像 https://github.com/moove-it/sidekiq-scheduler 这样的调度程序来确保它按您的需要定期发生。
随着您的应用程序的增长和您需要更多 worker,这将变得更容易维护。它还将您的计划转移到版本控制中。
我有一个 Rails 应用程序设置了一个模型帐户,该帐户应该每天早上使用来自外部 API 我正在呼叫(CRM)的数据进行更新。基本上,要么我在我的应用程序中创建我在 CRM 中找到的新帐户以及一些与我的列映射的字段,要么我找到该帐户(如果它已经存在)并更新它。
到目前为止,我一直将此代码放入 seeds.rb
文件中,并从托管该应用程序的 Heroku 中设置一个调度程序,其中包含以下命令:定期运行的 rails db:seed
.
我的问题是,我确定有更好的方法可以做到这一点。我读过有关 rake tasks 的内容,但我不太明白它如何适用于我的案例。否则我想把我的方法作为一个 self 方法放在 models/account.rb
文件中。但我真的不知道如何在 rake 命令中调用它以允许我在 Heroku 中设置调度程序。
知道放置此方法的最佳位置以及如何从命令行调用它吗?
提前致谢。
您可以在您的项目中创建一个script
目录,并将您的脚本从db/seeds.rb
放入该目录,可能名为update_accounts.rb
。然后你可以 运行 它与
rails runner script/update_accounts.rb
并在 heroku 中安排该任务。有关 rails runner here.
的更多信息我建议使用 Sidekiq 等后台处理器:https://github.com/mperham/sidekiq
使用 Sidekiq 后,您需要一个像 https://github.com/moove-it/sidekiq-scheduler 这样的调度程序来确保它按您的需要定期发生。
随着您的应用程序的增长和您需要更多 worker,这将变得更容易维护。它还将您的计划转移到版本控制中。