Ruby 如果缺少ERb标记,中间人不解析模板链上的源文件
我正在将一个Jekyll网站转换为中间商。我将文件命名为filename.html.md.liquid.erb,以便按照以下顺序处理这些库:erb、liquid、kramdown。我发现,如果文件中没有至少一个erb标记,模板解析就会停止,整个文件将呈现为纯文本,而不是由liquid和kramdown解析。简单地添加Ruby 如果缺少ERb标记,中间人不解析模板链上的源文件,ruby,middleman,tilt,Ruby,Middleman,Tilt,我正在将一个Jekyll网站转换为中间商。我将文件命名为filename.html.md.liquid.erb,以便按照以下顺序处理这些库:erb、liquid、kramdown。我发现,如果文件中没有至少一个erb标记,模板解析就会停止,整个文件将呈现为纯文本,而不是由liquid和kramdown解析。简单地添加 <% if nil %> <% end %> 在源文档的底部,会呈现整个模板链,但我不想被迫包含这些。我只是想有选择权 编辑:我刚刚发现,如果通过扩展
<% if nil %>
<% end %>
在源文档的底部,会呈现整个模板链,但我不想被迫包含这些。我只是想有选择权
编辑:我刚刚发现,如果通过扩展指定的任何模板实际上没有任何处理要做,这也适用。因此,例如,如果我有filename.html.md.liquid.erb,并且我有erb标记但没有liquid标记,erb将呈现良好,但标记将作为静态文本输出
我之所以将其标记为tilt和middleman,只是因为我不确定问题可能出在哪里
任何指针都将不胜感激。这样做的原因似乎与缓存有关。当我删除缓存调用时,模板会一直渲染到链的上游。我还更改了缓存键以使用模板扩展,这似乎也起到了作用。改成 模板链解析其余的扩展,即使之前的模板处理不包含任何模板语言标记。我在《中间人》中开篇,因为可能有比这更好的解决方法
template = cache.fetch("compiled_template_#{extension}".to_sym, options, body) do
::Tilt.new(path, 1, options) { body }
end