在将响应发送回 Rails 中的客户端后,我正在尝试运行一个操作。是否可以在没有后台工作人员或创建新线程的情况下执行此操作?
我查看了 after_filter 回调,但它似乎只允许您在呈现 View /响应之前执行代码。
谢谢
最佳答案
简短回答:不,这是不可能的。您必须使用线程或某种延迟作业框架( Sidekiq 、 Resque 等)。
长答案:您实际上可以使用 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
关于ruby-on-rails - 在 Rails 中将响应发送回浏览器后是否可以执行方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31755895/