【发布时间】:2014-10-07 12:55:49
【问题描述】:
我有兴趣仅在将页面刷新到客户端之后在 Rails 中运行一些服务器端代码(类似于问题asked here for Django)。可以说,我正在寻找的是与 Rails 的 Django's request_finished signal 等效的功能。
我发现了对 ActiveRecord 的回调支持(它作用于数据库的持久性,而不是请求状态),以及用于推迟旨在允许页面响应完成的长时间运行任务的工具(但不费吹灰之力不支持仅在页面刷新到客户端后才启动该任务)。
[直接用例是处理用户请求的操作,这可能会中断正在运行的服务;目标是在继续进行破坏性操作之前将当前页面发送给客户端,而不会出现任何像硬编码延迟那样容易竞争且通常很麻烦的东西。
我想要完成的事情可能吗?我的目标是 Rails 4.x。
【问题讨论】:
-
我不确定我是否在用例中有所区别,为什么延迟工作之类的东西不起作用?
-
你可以依赖javascript吗? DOM 完成加载后应该很容易触发 ajax 请求
-
您可以使用后台工作者或线程。没有理由尴尬地挂在刷新后事件中。
-
@DaveNewton,延迟工作的问题在于它是一个任意延迟——意味着你要么延迟太多,要么冒着延迟不够的风险(尤其是例如,处理请求的线程在调试器中暂停),而不是有一个触发器或回调,它会尽快而不是之前。
标签: ruby-on-rails