ruby + ruby​​ on rails后台预定数据库更新

时间:2014-03-22 11:43:18

标签: ruby-on-rails ruby

我需要每10分钟使用ruby脚本的结果更新一个数据库表。 ruby脚本输出是一个哈希。所以我需要导航我的哈希结果并将其放在我的数据库的表中。我想在我的rails应用程序中执行此操作,就像预定的后台作业一样。

这样做的最佳实践是什么?

4 个答案:

答案 0 :(得分:0)

您最好将Redis + Resque用于此

Redis是key/value pair db storage(基本上是Rails应用程序的RAM),而Resque是一个排队系统,它运行任务来循环遍历redis值。 This RailsCast会为您提供一个很好的概述:

enter image description here

答案 1 :(得分:0)

您可以试试job scheduler for Ruby

答案 2 :(得分:0)

默认情况下,

Custom rake task是为Rails设计的。它不要求您在项目中包含新内容。这不是关于安排的。它只是关于实现在应用程序前端处理模型层的代码。

对于调度,有许多解决方案从system cron开始。但你的问题似乎不是关于调度而是关于代码的去向。

对于Resque和其他排队系统,当您从用户请求启动后台任务并需要使其异步时,需要它们。现在看来不是你的情况。

答案 3 :(得分:0)

如果您正在使用基于Unix的系统,最好的工具IMHO是whenever gem:

every 10.minutes do
  runner "DbUpdater.update_db"
end