jekyll调试或打印所有变量

时间:2015-12-02 16:48:16

标签: ruby debugging jekyll

我想进入Jekyll的大脑,看看你发生了什么,在php中你有get_defined_vars,所以我尝试做类似的事情:

      {% for local_variable in local_variables %}
      <p> {{ local_variable }} </p><br>
      {% endfor %}

哪个输出什么都没有。我努力了吗?在ruby或jekyll中有一些方法吗?我只是想四处寻找并确保一切设置正确,并可能找出我不知道的变量。

5 个答案:

答案 0 :(得分:34)

使用Jekyll 2.x,您可以使用this plugin

它允许您执行scanf(" %c",&n);

之类的操作

自Jekyll 3以来,你有{{ site | debug }}

答案 1 :(得分:21)

inspect并不允许您查看变量,而jsonify就是这样。

{{ variable | jsonify }}

无需插件。

请注意,jsonify将使用尽可能多的内存来执行其中没有任何特定限制的内存。比方说,如果您有数百个帖子或页面,并且您希望一次性将它们全部解开,这可能无法按预期工作。最坏的情况是系统可能会从RAM中消失并变得无法响应。谨慎行事。

答案 2 :(得分:2)

其他答案未解决问题的“所有变量”部分。

尽管Jekyll不提供等效的get_defined_vars,但the documentation确实声明了all available global variables(目前为sitepage,{{1 }},layoutcontent)。

因此,您可以通过一系列paginator filter调用来调试/打印所有变量(也可以使用jsonify进行过滤,因为其中一些将包含HTML) :

escape

答案 3 :(得分:1)

要漂亮地打印变量,可以将其插入任何模板中

<pre id="jekyll-debug"></pre>
<script>
var obj = JSON.parse(decodeURIComponent("{{ site | jsonify | uri_escape }}"));
var pretty_json = JSON.stringify(obj, null, 4);  // Pretty-printed JSON (indented 4 spaces).
document.getElementById("jekyll-debug").textContent = pretty_json;
</script>

site(在{{ site | jsonify | uri_escape }}中)更改为要打印的变量。

然后您将可以看到您的变量在生成的页面中排列整齐。像这样:

Pretty-printed Jekyll template variables

答案 4 :(得分:0)

为了将来,谁会看到此页面。

我已经编写了一个Package来进行此类工作。在您的命令行中安装它,

gem install 'jekyll-liquid-debug'

然后,您可以在终端中调试您的liquid文件,而无需一次又一次地构建整个站点

通过使用

jekyll-liquid-debug -f YOUR_LIQUID_FILE.liquid

它还有其他用途,请检查更多〜