2011-10-21 3 views
3

나는 레일과 그 문제에있어 루비를 처음 사용합니다. 루비 1.9.2와 레일즈를 기반으로하는 레일 어플리케이션을 구축했습니다.레일에서 루비에서 스트리밍보기 3.1

저는 레일에 스트리밍을 구현 한 것에 대한 이해를 가지고 문제를 겪었습니다. 레일이 템플릿 컨텐츠를 렌더링하기 전에, 레일을 평가하는 과정을 완료해야합니다.

는이 전 다음

#!/bin/sh 


cat <<END 
Content-Type: text/html 

END 

for i in {1..10} 
do 
echo $i 
sleep 1 
done 

그들은 모든 번, 스크립트에 의해 렌더링되므로이 브라우저에서 10-1에서 번호를 순차적으로 표시됩니다 같은 CGI 스크립트를 예를 들어 봅시다. 레일즈보기에서 에뮬레이트하고 싶은 동작입니다.

내가보기에서 다음과 같이 말할 수 있습니다.

<h1> hi </h1> 
<% 
sleep 5 
%> 
<h2> bye </h2> 

아무 것도 표시하기 전에 절전 모드 5가 완료 될 때까지 대기합니다.

웹 서버에서 응답을보기 위해 curl -i를 사용하면 Transfer-Encoding에서 예상대로 응답 헤더가 예상대로 청크 처리됩니다. 그러나 수면이 완료 될 때까지 신체 내용을 렌더링하지는 않습니다.

위에서 붙여 넣은 간단한 cgi 스크립트와 동일한 방법으로 본문 내용을 렌더링하려면 어떻게해야합니까? 특히, 먼저 <h1> hi </h1> 다음에 5 초 후 <h2> bye </h2>?

답변

0

ActionController::Streaming에 대한 설명서를 살펴보십시오. 위키 백도 :

스트리밍은 주어진 템플릿에 쉽게 추가 할 수 있습니다. 수행해야 할 작업은 :stream 옵션을 전달하는 것입니다.

class PostsController 
    def index 
    @posts = Post.scope 
    render :stream => true 
    end 
end 

당신은 물론, 자세한 내용은 문서의 나머지 부분을 읽을 수 있습니다

.

+1

올바른지, 그리고 그것이'format.html {render : stream => true}'컨트롤러에있는 것입니다. 그리고 curl을 사용하면 응답 헤더와 레이아웃을 스트림 할 수 있지만 스트림의 내용은 볼 수 없습니다. 주형. –

+1

여기에 템플릿이 스트리밍되지 않습니다 ... – Subhas