Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如果缺少ERb标记,中间人不解析模板链上的源文件_Ruby_Middleman_Tilt - Fatal编程技术网

Ruby 如果缺少ERb标记,中间人不解析模板链上的源文件

Ruby 如果缺少ERb标记,中间人不解析模板链上的源文件,ruby,middleman,tilt,Ruby,Middleman,Tilt,我正在将一个Jekyll网站转换为中间商。我将文件命名为filename.html.md.liquid.erb,以便按照以下顺序处理这些库:erb、liquid、kramdown。我发现,如果文件中没有至少一个erb标记,模板解析就会停止,整个文件将呈现为纯文本,而不是由liquid和kramdown解析。简单地添加 <% if nil %> <% end %> 在源文档的底部,会呈现整个模板链,但我不想被迫包含这些。我只是想有选择权 编辑:我刚刚发现,如果通过扩展

我正在将一个Jekyll网站转换为中间商。我将文件命名为filename.html.md.liquid.erb,以便按照以下顺序处理这些库:erb、liquid、kramdown。我发现,如果文件中没有至少一个erb标记,模板解析就会停止,整个文件将呈现为纯文本,而不是由liquid和kramdown解析。简单地添加

<% 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