在Rails中将响应发送回浏览器后是否可以执行方法?

时间:2015-07-31 22:07:09

标签: ruby-on-rails ruby callback

我在Rails中将响应发送回客户端之后尝试运行操作。是否可以在没有后台工作者或创建新线程的情况下执行此操作?

我查看了after_filter回调,但看起来这只能让你在渲染视图/响应之前执行代码。

由于

1 个答案:

答案 0 :(得分:2)

简短回答:不,这是不可能的。您必须使用线程或某种延迟的工作框架(SidekiqResque等)。

答案很长:您实际上可以使用ActionController :: Live来控制将响应“刷新”到客户端的时刻。

来自docs的修改示例:

class MyController < ActionController::Base
  include ActionController::Live

  def stream
    begin
      response.headers['Content-Type'] = 'text/event-stream'
      100.times {
        response.stream.write "hello world\n"
        sleep 1
      }
    ensure
      response.stream.close
    end
    do_my_after_response_job
  end
end