如果缺少ERb标记,Middleman不会解析模板链中的源文件

时间:2013-02-20 23:23:46

标签: ruby middleman tilt

我正在将Jekyll网站转换为Middleman。我将我的文件命名为filename.html.md.liquid.erb,以便按顺序处理这些库:ERb,然后是液体,然后是kramdown。我发现如果我在文件中没有至少一个erb标签,模板解析就会停止,整个文件将呈现为纯文本,而不是被液体解析,然后是kramdown。只需添加

<% if nil %>
<% end %>
源文档底部的

导致整个模板链呈现,但我不希望强制包含这些。我只想拥有选项

编辑:我刚刚发现这也适用于通过扩展指定的模板的任何实际上没有任何处理要做。所以,例如,如果我有filename.html.md.liquid.erb并且我有ERb标签但没有液体标签,则ERb将呈现正常,但Markdown将作为静态文本输出。

我将此标记为倾斜和中间人,仅仅是因为我不确定问题可能在哪里。

任何指针都会非常感激。

1 个答案:

答案 0 :(得分:0)

看起来这个原因与缓存有关。当我删除缓存调用时,模板会一直向上呈现链。我还更改了缓存键以使用模板扩展,这似乎也可以。将rendering.rb:257更改为

template = cache.fetch("compiled_template_#{extension}".to_sym, options, body) do
    ::Tilt.new(path, 1, options) { body }
end

模板链解析其余的扩展,即使前一个模板的处理不包含任何模板语言标记。我在米德曼开了an issue因为可能有更好的方法来解决它。