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

标签 ruby-on-rails ruby callback

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

我查看了 after_filter 回调,但它似乎只允许您在呈现 View /响应之前执行代码。

谢谢

最佳答案

简短回答:不,这是不可能的。您必须使用线程或某种延迟作业框架( 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

关于ruby-on-rails - 在 Rails 中将响应发送回浏览器后是否可以执行方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31755895/

相关文章:

java - 监听(注册)接口(interface)的特定方法而不实现所有方法,Java

javascript - 在插件内的回调函数中使用 ajax 输出 (jQuery)

ruby-on-rails - Rails 5.2 和 webpacker 3.4.3 : Assets not compiled when deployed to Heroku

ruby-on-rails - 带有字符串路径的 Redirect_to

ruby-on-rails - CanCan 在应该阻止访问时却没有阻止

ruby - 给定一个 Ruby 对象的实例,我如何获得它的元类?

ruby - 如何在dynamodb查询操作中使用通配符*?

javascript - 使用alertify.js 进行递归会导致自动关闭警报

ruby-on-rails - 更新父级时未设置父级 ID

javascript - rails 上的 ruby : javascript in asset pipeline