mysql - 每当 gem 时,如何编写 Rails cron 作业?

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

安装每当 gem 时。我看到了各种 cron 和每当关于以分钟、小时、天等方式安排任务的教程。我观看了 cron/每当 上的railscast 视频。 但除了 rake 任务之外,我还没有找到任何关于如何编写作业本身的示例。

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

 rails dbconsole
 select blah from blah;

有没有办法在whenever中编写mysql命令?这是轮询数据库更改的正确/最佳方法吗? 我知道有多种方法可以从 mysql 本身轮询数据库,但我被特别告知要从 Rails 端进行操作。

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

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

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

最佳答案

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

runner "MyModel.some_process"

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

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

runner "DatabaseWatcher.run"

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

关于mysql - 每当 gem 时,如何编写 Rails cron 作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17279730/

相关文章:

ruby-on-rails - 在 Rails 上的 ajax 中传递文本字段值

php - Drupal 7 异常 'EntityMalformedException' 试图运行搜索索引 cron

ruby-on-rails - 搜索 "/"时出现 Thinking Sphinx 错误

mysql - 如何设计关联多个标签id的关系型数据库?

php - 如何运行在数据库中搜索部分关键字的 SQL 查询

c# - MySql数据库中如何调用多个存储过程

ruby-on-rails - 使用 SASS 切换用户主题 - Ruby on Rails

spring-boot - 如何在具有运行中的spring-boot应用程序的kubernetes容器/容器中运行cron?

Python crontab 自动添加换行符并禁用其他 cron 作业

php - 如何从数据库检查用户IP并启用/禁用表单文本区域