inukshuk / jekyll-scholar

jekyll extensions for the blogging scholar
MIT License
1.12k stars 102 forks source link

Support Jekyll 4.1.0 #305

Closed tim-taylor closed 4 years ago

tim-taylor commented 4 years ago

Sorry to jump right back in with another issue having just resolved the previous one. This new issue was apparent in my previous issue but I ignored it at the time.

When I update from jekyll 4.0.1 to 4.1.0 I get a compilation error. This seems to be related to the jekyll-scholar code for generating a details page. If I have a details page layout in the _layouts folder named as specified by details_layout in _config.yml, I get the error. If I remove or rename this file, I don't see the error (but of course in that case I don't get the details page generated either).

The compilation error trace is:

Configuration file: /home/tim/Dropbox/projects/jekyll/tt-test-case/_config.yml
            Source: /home/tim/Dropbox/projects/jekyll/tt-test-case
       Destination: /home/tim/Dropbox/projects/jekyll/tt-test-case/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
Traceback (most recent call last):
        25: from /home/tim/gems/bin/jekyll:23:in `<main>'
        24: from /home/tim/gems/bin/jekyll:23:in `load'
        23: from /home/tim/gems/gems/jekyll-4.1.0/exe/jekyll:15:in `<top (required)>'
        22: from /home/tim/gems/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program'
        21: from /home/tim/gems/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go'
        20: from /home/tim/gems/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute'
        19: from /home/tim/gems/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each'
        18: from /home/tim/gems/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute'
        17: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/commands/serve.rb:86:in `block (2 levels) in init_with_program'
        16: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/command.rb:91:in `process_with_graceful_fail'
        15: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/command.rb:91:in `each'
        14: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail'
        13: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/commands/build.rb:36:in `process'
        12: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/commands/build.rb:65:in `build'
        11: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/command.rb:28:in `process_site'
        10: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/site.rb:79:in `process'
         9: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/site.rb:189:in `generate'
         8: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/site.rb:189:in `each'
         7: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/site.rb:191:in `block in generate'
         6: from /home/tim/gems/gems/jekyll-scholar-6.7.0/lib/jekyll/scholar/generators/details.rb:48:in `generate'
         5: from /home/tim/gems/gems/jekyll-scholar-6.7.0/lib/jekyll/scholar/generators/details.rb:48:in `each'
         4: from /home/tim/gems/gems/jekyll-scholar-6.7.0/lib/jekyll/scholar/generators/details.rb:50:in `block in generate'
         3: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/page.rb:169:in `render'
         2: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/convertible.rb:207:in `do_layout'
         1: from /home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/convertible.rb:207:in `tap'
/home/tim/gems/gems/jekyll-4.1.0/lib/jekyll/convertible.rb:208:in `block in do_layout': undefined method `layouts=' for #<CiteProc::Ruby::Renderer:0x000055b92058d570> (NoMethodError)

Lines 4-6 of this trace show that the error is associated with code in jekyll-scholar-6.7.0/lib/jekyll/scholar/generators/details.rb.

If I make a single change in my Gemfile.lock file to revert from jekyll 4.1.0 back to 4.0.1 then the compilation error disappears and the code compiles without problem.

A minimal test case that demonstrates the problem is attached tt-test-case-2.tar.gz

I'm not sure if this is a bug with jekyll or jekyll-scholar (or just that I'm doing something stupid in my code)?

inukshuk commented 4 years ago

Thanks! There's an internal change in Jekyll 4.1 that breaks the details generator. This should be fixed in jekyll-scholar 6.8.0