web-dev-qa-db-fra.com

jekyll déboguer ou imprimer toutes les variables

Je veux pénétrer dans le cerveau de Jekyll et voir ce qui se passe, en php vous avez get_defined_vars , alors j'ai essayé de faire quelque chose de similaire à cela avec:

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

Qui n'a rien produit. Suis-je trop dur? Y a-t-il une méthode dans Ruby ou jekyll pour cela? Je voudrais juste fouiller et m'assurer que tout est correctement configuré et éventuellement pour découvrir des variables que je ne connais pas.

29
thoth

Avec Jekyll 2.x, vous pouvez utiliser ce plugin .

Il vous permet de faire quelque chose comme {{ site | debug }}.

Depuis Jekyll 3, vous avez {{ variable | inspect }}.

35
David Jacquel

inspect ne vous permet pas de jeter un œil à l'intérieur des variables, où jsonify fait exactement cela.

{{ variable | jsonify }}

Aucun plugin nécessaire.

Sachez que jsonify utilisera autant de mémoire dont il a besoin pour faire son travail sans aucune limite spécifique. Disons que si vous avez des centaines de publications ou de pages et que vous souhaitez les jsonifier en une seule fois, cela peut ne pas fonctionner comme prévu. Dans le pire des cas, le système peut sortir de RAM et ne répond plus. Faites preuve de prudence.

21
sanmai

Les autres réponses ne traitent pas de la partie "toutes les variables" de la question.

Bien que Jekyll n'offre pas de get_defined_vars équivalent, la documentation déclare toutes les variables globales disponibles (qui sont actuellement site, page, layout, content et paginator).

Vous pouvez donc déboguer/imprimer toutes les variables avec une série d'appels jsonifyfiltre (filtrage également avec escape car certains d'entre eux contiendront du HTML):

<pre>
    site: {{ site | jsonify | escape }}
    page: {{ page | jsonify | escape }}
    layout: {{ layout | jsonify | escape }}
    content: {{ content | jsonify | escape }}
    paginator: {{ paginator | jsonify | escape }}
</pre>
2
Alex Peters

Pour joliment imprimer des variables, vous pouvez insérer ceci dans n'importe quel modèle:

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

Modifier site (dans {{ site | jsonify | uri_escape }}) à la variable que vous souhaitez imprimer.

Vous pourrez alors voir vos variables bien rangées dans les pages générées. Quelque chose comme ça:

Pretty-printed Jekyll template variables

0
Flux