tokkonopapa/octopress-tagcloud

Liquid error: undefined method `+' for nil:NilClass

Opened this issue · 7 comments

kvz commented

I followed the instructions but instead of showing a category list with

<section>
  <h1>Categories</h1>
    <ul id="category-list">{% category_list counter:true %}</ul>
</section>

it returns:

Liquid error: undefined method `+' for nil:NilClass

any idea what could be the problem?

I had a same error with different situation when I marked up with liquid.
Could you try to set categories as an array in YAML front matter like below.

---
layout: post
categories: [Ruby]
---

Unfortunately, I could not reproduce the error and also find a bug.

This is caused when you do not have categories in the front matter of a page it seems

@JakeGinnivan
Thank you for following up this issue. I will check.

I am also getting the same error when doing rake generate.

I am using Octopress 2.0 without any modification: uses liquid 2.3.0 and jekyll 0.12

Oh, and I get the same error whether I list the categories in posts as

categories:
- abc
- def

or

categories: [abc, def]

Error log:

Configuration from /home/kmodi/octopress/_config.yml
Building site: source -> public
Liquid Exception: undefined method `+' for nil:NilClass in default
/home/kmodi/octopress/plugins/tag_cloud.rb:64:in `render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:94:in `block in render_all'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `collect'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `render_all'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:82:in `render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/template.rb:124:in `render'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:26:in `block (2 levels) in render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/context.rb:91:in `stack'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:25:in `block in render'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:20:in `chdir'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:20:in `render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:94:in `block in render_all'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `collect'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `render_all'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:82:in `render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/template.rb:124:in `render'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:26:in `block (2 levels) in render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/context.rb:91:in `stack'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:25:in `block in render'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:20:in `chdir'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:20:in `render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:94:in `block in render_all'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `collect'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `render_all'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:82:in `render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/template.rb:124:in `render'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:26:in `block (2 levels) in render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/context.rb:91:in `stack'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:25:in `block in render'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:20:in `chdir'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/tags/include.rb:20:in `render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:94:in `block in render_all'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `collect'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `render_all'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/block.rb:82:in `render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/template.rb:124:in `render'
/home/kmodi/gems/gems/liquid-2.3.0/lib/liquid/template.rb:132:in `render!'
/home/kmodi/gems/gems/jekyll-0.12.0/lib/jekyll/convertible.rb:101:in `do_layout'

Found the fix!! The root: variable in _config.yml was left blank. After making it root: / (note the added forward slash), that error went away.

This line
category_dir = config['root'] + config['category_dir'] + '/' in tag_cloud.rb was causing problem as config['root'] was null.

@kaushalmodi, thank you very very much!!
Could you test branch issue4 ?