安装每当 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/