是否有一个gem在Rails中提供“after_response”过滤器?

时间:2012-04-17 18:14:57

标签: ruby-on-rails

我正在尝试进行一些激烈的优化。我知道延迟工作。但在发送回复之前,我甚至不想花时间创建延迟作业。我想回复用户,然后担心在发送响应后创建延迟作业。

是否有一些宝石会做出类似的事情?

2 个答案:

答案 0 :(得分:2)

如果它是轻量级的,您可以创建一个线程:

def show
  @record = Record.find(params[:id])
  Thread.new do
    Rails.logger.info "#{Time.now}"
    sleep 10
    Rails.logger.info "#{Time.now}"
  end
end

我的日志输出与上面的内容(以及立即响应呈现)

Started GET "/" for 127.0.0.1 at 2012-04-17 14:15:29 -0500
Processing by HomeController#public as HTML
2012-04-17 14:15:29 -0500
  Rendered home/public.html.haml within layouts/application (0.4ms)
  Rendered layouts/_navbar.html.haml (8.9ms)
  Rendered layouts/_flash.html.haml (0.1ms)
  Rendered layouts/_footer.html.haml (0.1ms)
Completed 200 OK in 210ms (Views: 202.3ms | ActiveRecord: 0.0ms)
2012-04-17 14:15:39 -0500

答案 1 :(得分:0)

工作延迟。在某些时候,您必须在发送响应后存储有关您要执行的过程的一些信息,这正是延迟作业的用途:存储有关在后台运行的进程的信息。

任何其他宝石都会做同样的事情,这会存储一些关于该做什么的信息。延迟工作有什么问题?如果你对延迟工作有任何具体问题,你最好解决它而不是使用任何其他未经证实的方法。