我正试图用流数据块中的http错误代码进行响应,但是web服务器抛出了一个异常。在这种情况下,正确的做法是什么?

/var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:803:in `throw':
uncaught throw :halt (ArgumentError)

我的代码:
require 'sinatra/base'
class App < Sinatra::Base
  get '/' do
    stream :keep_open do |out|
      error 401
    end
  end
  run! if app_file == $0
end

最佳答案

根据我对#stream()的理解,已经发送了响应头。虽然您可以继续流式传输数据(主体),甚至关闭连接,但我不认为您可以在发送头之后修改它们。我正在调查辛纳特拉院子的文件以核实,但我很确定这是你的问题。

关于ruby - 如何从sinatra中的流块中停止?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15011586/

10-13 09:41