Ruby 在响应完成之前对HTTP响应进行响应?

Ruby 在响应完成之前对HTTP响应进行响应?,ruby,http,Ruby,Http,对于任何Ruby库,在HTTP会话完成/关闭之前以及从服务器获取整个结果之前,当模式与HTTP响应匹配时,是否可以开始执行某些操作 伪代码: http.get 'http://example.org/foo.json' do |response| run_this_function if /\"field\":\"data\"/ =~ response.body_str end 我想要类似的东西,但是是Ruby。通常,Net::HTTP会将整个主体拉入内存,但您可以将该行为更改为流。发件人

对于任何Ruby库,在HTTP会话完成/关闭之前以及从服务器获取整个结果之前,当模式与HTTP响应匹配时,是否可以开始执行某些操作

伪代码:

http.get 'http://example.org/foo.json' do |response|
  run_this_function if /\"field\":\"data\"/ =~ response.body_str
end

我想要类似的东西,但是是Ruby。

通常,Net::HTTP会将整个主体拉入内存,但您可以将该行为更改为流。发件人:

流式响应主体»↑

默认情况下,Net::HTTP将整个响应读取到内存中。如果您正在处理大型文件或希望实现进度条,则可以将正文直接流式传输到IO

你会希望你的代码在街区里扎营。有关详细信息,请参阅文档,因为您应该了解更多信息,但基本上它会说:

如果给定了一个块,则将主体传递给该块,主体以片段形式提供,因为它是从套接字读入的


你是在rails上运行还是只是ruby?只是ruby。我正在编写一个http客户端。
uri = URI('http://example.com/large_file')

Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new uri

  http.request request do |response|
    open 'large_file', 'w' do |io|
      response.read_body do |chunk|
        io.write chunk
      end
    end
  end
end