【发布时间】:2014-09-05 01:12:35
【问题描述】:
我有一个包含命令行应用程序的 Sinatra 应用程序。它没有可能的用户,所以性能不是问题。
我正在使用 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
目前我正在渲染模板(就好像我拥有所有数据一样),然后将模板文本拆分到应该插入数据的位置。然后我渲染出模板的开头,然后在我收到数据时渲染数据(在流上),然后是模板的结尾。
Slim 应该支持流媒体...
我想写。
post "/reorder" do
...
stream do |out|
out << slim(:index)
end
end
或更好
post "/reorder" do
...
slim(:index, stream: true)
end
如何在渲染时变得苗条以屈服于数据流,从而一次性流出模板?
【问题讨论】:
标签: ruby streaming sinatra slim-lang