Можно ли установить код состояния при использовании render: text => proc - PullRequest
2 голосов
/ 16 февраля 2011

Rails поддерживает потоковую передачу обновлений текста с контроллера действия / в:

render :text => proc { |response, output|
  10_000_000.times do |i|
    output.write("This is line #{i}\n")
  end
}

Аналогично, текст может быть отображен с кодом состояния http:

render :text => ":(", :status => 400

если внутри 10 миллионов записей мы обнаружим ошибку, возможно ли закрыть поток с кодом состояния?

Спасибо за потраченное время!

1 Ответ

1 голос
/ 16 февраля 2011

Вы можете закрыть поток, поймав ошибку и выбив из процессаЗатем вы можете передать сообщение об ошибке или просто закрыть свой поток.Например:

render :text => proc { |response, output|
  10_000_000.times do |i|
    begin
      output.write("This is line #{i}\n")
      raise StandardError, "reached line 100!" if i == 100
    rescue Exception => e
      response.status = 400
      output.write(e.message)
      break
    end
  end
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...