0

无论何时安装 gem 。我看到了各种各样的 cron 以及关于用分钟、小时、天等安排任务的教程。我在 cron/ 上观看了railscast视频。但我还没有找到任何关于如何编写工作本身的例子,除了 rake 任务。

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

 rails dbconsole
 select blah from blah;

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

我是所有这些技术(Rails、数据库、ajax)的新手,所以这可能就是我不清楚答案的原因。

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

现在,页面使用 ajax 来刷新整个 html 表。但他们只想通过 ajax 进行行刷新/更新。

4

1 回答 1

2

再次查看RailsCast 中的 cron/whenever。您会注意到这样的示例代码行:

runner "MyModel.some_process"

字符串中的代码被评估并运行。因此,无论何时运行,只要您自己编写该代码并有一种方法可以调用它。

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

runner "DatabaseWatcher.run"

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

于 2013-06-24T15:59:55.603 回答