Ruby jekyll调试或打印所有变量

Ruby jekyll调试或打印所有变量,ruby,debugging,jekyll,Ruby,Debugging,Jekyll,我想进入Jekyll的大脑,看看在php中发生了什么,所以我试着做一些类似的事情: {% for local_variable in local_variables %} <p> {{ local_variable }} </p><br> {% endfor %} <pre> site: {{ site | jsonify | escape }} page: {{ page | jsonify

我想进入Jekyll的大脑,看看在php中发生了什么,所以我试着做一些类似的事情:

      {% for local_variable in local_variables %}
      <p> {{ local_variable }} </p><br>
      {% endfor %}
<pre>
    site: {{ site | jsonify | escape }}
    page: {{ page | jsonify | escape }}
    layout: {{ layout | jsonify | escape }}
    content: {{ content | jsonify | escape }}
    paginator: {{ paginator | jsonify | escape }}
</pre>
{局部变量%中的局部变量%}
{{local_variable}}


{%endfor%}

它什么也不输出。我是不是太努力了?在ruby或jekyll中是否有这样的方法?我只是想四处看看,确保一切都设置正确,并尽可能找出我不知道的变量。

对于Jekyll 2.x,您可以使用

它允许您执行类似于
{{site | debug}}
的操作


自从Jekyll3之后,您就有了
{{variable | inspect}
inspect
不允许查看内部变量,而
jsonify
正是这样做的

{{ variable | jsonify }}
不需要插件


请注意,
jsonify
将在不受任何特定限制的情况下使用所需的内存。比如说,如果您有数百篇文章或页面,并且希望同时将它们都jsonify化,那么这可能不会像您预期的那样起作用。最坏的情况是,系统可能会耗尽RAM并失去响应。谨慎行事。

其他答案没有涉及问题的“所有变量”部分

尽管Jekyll没有提供与之等价的
get\u defined\u vars
,但它确实声明了(此时是
site
page
布局
内容
,以及
paginator

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


地点:{site | jsonify | escape}
页面:{page | jsonify | escape}
布局:{layout | jsonify | escape}
内容:{content | jsonify | escape}
paginator:{{paginator|jsonify|escape}

要打印变量,可以在任何模板中插入:


var obj=JSON.parse(decodeURIComponent({{site | jsonify | uri_escape}}”);
var prettyJson=JSON.stringify(obj,null,4);//打印精美的JSON(缩进4个空格)。
document.getElementById(“jekyll调试”).textContent=prettyJson;
site
(在
{{site | jsonify | uri_escape}}}
中)更改为要打印的任何变量

然后,您将能够在生成的页面中看到整齐排列的变量。大概是这样的:


对于未来,谁能看到这一页

我写了一个包来做这类工作。在命令行中安装它

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

通过使用

它还有其他用途,请进一步查看~

jekyll-liquid-debug -f YOUR_LIQUID_FILE.liquid