你怎么写Rails cron作业什么时候宝石?

时间:2013-06-24 15:53:10

标签: mysql ruby-on-rails cron scheduled-tasks whenever

安装每次 gem。我看到各种类型的cron和每当教程有关分钟,小时,天等安排任务。我在cron / 上观看了railscast视频。 但是我还没有找到任何关于如何自己编写工作的例子,而不是rake任务。

我想安排一项检查数据库是否有变化的任务。这个想法是数据库将有标签,告诉你哪个特定行已更改。 每当应定期轮询数据库以检查这些更改。然后它希望可以推送,或让客户知道它需要使用ajax动态更新页面。 如果我手动执行此操作,我将使用如下命令:

 rails dbconsole
 select blah from blah;

有没有办法在 时编写mysql命令?这是轮询数据库更改的正确/最佳方法吗? 我知道有一些方法可以从mysql本身轮询一个数据库,但是我已经被明确告知要从rails端进行。

我是所有这些技术(Rails,数据库,ajax)的新手,所以这可能就是为什么答案对我来说不清楚。

在客户端,我有使用jquery添加/删除/更改行数据的按钮,只是为了确保自己知道如何从数据库中获取内容后更改表中的内容。这些按钮最终将被删除。

现在,该页面使用ajax刷新整个html表。但他们希望通过ajax刷新/更新一行。

1 个答案:

答案 0 :(得分:2)

再次查看RailsCast for cron/whenever。你会注意到这样一个代码示例:

runner "MyModel.some_process"

评估并运行字符串中的代码。无论你想要什么时候运行,只需自己编写代码并有办法调用它。

所以也许您创建一个名为DatabaseWatcher的类并将其存储在lib中,该类具有名为.run的类级别方法,您将执行以下操作:

runner "DatabaseWatcher.run"

就是这样。在.run方法中,您可以放置​​逻辑。至于如何实际编写代码,这取决于您的要求。您是否正在寻找updated_at时间是否在1分钟之内?您是否存储了上次检查数据库的时间,然后您可以查看updated_at时间是否大于该时间?每次更改模型时,您是否有一个存储表?这一切都取决于你。