【问题标题】:Rails HTTP streaming with HAML使用 HAML 的 Rails HTTP 流式传输
【发布时间】:2011-11-22 04:48:37
【问题描述】:

在 Rails 中将 HTTP 流与 HAML 项目一起使用似乎存在问题。如果我改用 ERB,它会完美运行。显然,this problem 的不止我一个。

stream 放在控制器顶部或在操作中使用render :stream => true 时不起作用。

我怎样才能让 HAML 和 HTTP 流很好​​地结合在一起?

更新:我在 gem 的页面上打开了一个问题,here

【问题讨论】:

  • 我想这是因为 HAML 必须先呈现整个页面,然后才能开始将任何内容发送给客户——这将是一个设计问题。我没有将此作为答案发布,因为我不确定,而且我现在没有时间检查。
  • @Romain:感谢您的意见。这也是我的怀疑,HAML 不会将单个文件转换为 ERB,而是实际上等待整个视图被组装然后提供 HTML。或类似的东西。这将是一个重大的交易破坏者,现在 3.1 已经发布并且流媒体可用。
  • 您是否尝试查看 HAML 和/或 Rails 是否已经有关于此的错误报告?我想修复 HAML 并非不可能(前提是我们都对错误的假设是正确的)。
  • 谷歌的想法。 github.com/nex3/haml/issues/436
  • 如果您正在寻找 ERB 的替代方案来进行 http 流式传输,SLIM 模板开箱即用地支持它:rubydoc.info/gems/slim/frames#Streaming

标签: ruby-on-rails-3.1 haml http-streaming


【解决方案1】:

HAML (source) 尚不支持此功能:

HTTP 流是需要大量 对核心 Haml 引擎的一组修改。只是适中 即使在基本情况下也很难让它工作,但是当你考虑到 诸如吃空格的运算符之类的东西,它会得到更多 困难。

这不是我在理论上反对的事情,但也不是 考虑到困难,我优先考虑的事情 实现它。

【讨论】:

    【解决方案2】:

    Haml 的内部结构使得它确实在进行过程中写入缓冲区。然而,Rails 传统上为模板语言提供的“标准”API 是一个相当简单的进出调用。我不认为 Haml 目前确实有“流媒体支持”,但它只是一个 API 问题而不是其他任何东西。

    我很好奇 Rails 是如何插入 ERB 来做到这一点的。

    猜你喜欢
    • 2012-10-20
    • 1970-01-01
    • 2012-01-02
    • 2011-12-20
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 2012-04-02
    相关资源
    最近更新 更多