2014-09-05 10 views
3

커맨드 라인 애플리케이션을 감싸는 Sinatra 앱이 있습니다. 사용자 수는 없으므로 성능에 문제가 없습니다.Sinatra 앱에서 Slim으로 HTML을 스트리밍 할 수 있습니까?

Sinatra의 스트리밍 API를 사용하여 명령이 실행될 때 HTML을 스트리밍 할 수 있습니다. 즉, 사용자는 명령이 실행되면 진행 상황을 볼 수 있습니다.

post "/reorder" do 
    @project = params["project"] 
    @id_or_range = params["id_or_range"] 
    @output_log = "[OUTPUT]" 

    before, after = slim(:index).split(@output_log) 

    stream do |out| 
    out << before 
    run(@project, @id_or_range, StreamOutput.new(out)) 
    out << after 
    end 
end 

https://gist.github.com/NigelThorne/04775270abd46b78e262

현재 I (나는 모든 데이터를 한 것처럼), 데이터가 삽입되어야하는 템플릿 텍스트를 분할 나는 템플릿을 렌더링 해킹을하고있는 중이 야. 그런 다음 템플릿의 시작 부분을 렌더링 한 다음 스트림에서받은대로 데이터를 렌더링 한 다음 템플릿의 끝 부분을 렌더링합니다.

슬림는 스트리밍을 지원하도록되어 ... 내가 쓰고 싶은

.

post "/reorder" do 
    ... 
    stream do |out| 
    out << slim(:index) 
    end 
end 

이상

내가 렌더링 데이터의 흐름에 굴복하는 슬림 얻을, 그래서 한 번에 서식 파일을 스트리밍하려면 어떻게
post "/reorder" do 
    ... 
    slim(:index, stream: true) 
end 

?

답변