Q:

jekyll debug or print all variables

I want to peak into Jekyll's brain and see what's going on, in php you have get_defined_vars, so I tried to do something akin to that with: 
      {% for local_variable in local_variables %}
      <p> {{ local_variable }} </p><br>
      {% endfor %}

Which output nothing. Am I trying too hard? Is there some method in ruby or jekyll for this?  I'd just like to poke around and make sure everything is set correctly and possibly to find out about variables I don't know about.

A:

With Jekyll 2.x, you can use this plugin.
It allows you to do something like {{ site | debug }}.
Since Jekyll 3, you have {{ variable | inspect }}.

A:

inspect doesn't let you peek inside variables, where jsonify does just that.
{{ variable | jsonify }}

No plugins needed.
Please be aware that jsonify will use as much memory it needs to do its thing without any specific limits. Say, if you have hundreds of posts or pages, and you would want to jsonify them all at once, this may not work as you expect. Worst case the system may go out of RAM and became unresponsive. Exercise due caution.

A:

The other answers don't address the “all variables” part of the question.
Although Jekyll doesn't offer a get_defined_vars equivalent, the documentation does declare all available global variables (which at this time are site, page, layout, content, and paginator).
You can therefore debug/print all variables with a series of jsonify filter calls (filtering also with escape since some of them will contain HTML):
<pre>
    site: {{ site | jsonify | escape }}
    page: {{ page | jsonify | escape }}
    layout: {{ layout | jsonify | escape }}
    content: {{ content | jsonify | escape }}
    paginator: {{ paginator | jsonify | escape }}
</pre>

