Rails:无论过滤器链中止,获取逻辑以在请求结束时运行?

时间:2010-05-10 05:43:26

标签: ruby-on-rails logging controller filter action-filter

是否在rails文档中讨论了在请求结束时调用函数的可靠机制,而不考虑过滤器链中止?

它不是在过滤器之后,因为如果任何先前的过滤器被重定向或渲染,则不会调用过滤器。

对于上下文,我试图在每个请求结束时将一些结构化的分析/报告信息放入应用程序日志中。此信息通过请求生命周期通过包含在自定义控制器访问器中的实例变量收集,并在末尾转储到JSON blob中以供后处理脚本使用。

我的最终目标是生成有关我的应用程序的逻辑查询分布(依赖于控制器逻辑的事情,而不仅仅是请求URI和参数),性能配置文件(在特定数据库查询中花费的时间或在Web服务上被阻止)的报告,失败率(包括被before_filter验证规则拒绝的无效传入请求,以及一些其他无法从应用程序和apache日志中的基本信息中真正解析的内容。

在更高级别,是否有一种不同的“轨道方式”可以解决我的应用分析目标?

2 个答案:

答案 0 :(得分:1)

您需要一个可以在应用程序完成请求后执行代码的中间件。有关详细信息,请参阅指南:http://guides.rails.info/rails_on_rack.html

答案 1 :(得分:0)

过滤器周围应该解决这个问题:http://apidock.com/rails/ActionController/Filters/ClassMethods

(真的很老 - 但在我找到答案之前遇到了这个问题)