dshowland
dshowland

Reputation: 63

Jekyll 4.0 Build Fails with NoMethodError

After upgrading to Jekyll 4.0, all builds fail with the following error:

/Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/static_file.rb:148:in `cleaned_relative_path': undefined method `length' for nil:NilClass (NoMethodError)

I have updated gems, Jekyll, Bundler, and all the gems used in the project. The only plugin I am using is jekyll-minimagick but removing this plugin does not fix the problem. Here is the full build trace

dauntless:my-site me$ bundle exec jekyll build --trace
Configuration file: /Users/me/Development/my-site/_config.yml
            Source: /Users/me/Development/my-site
       Destination: /Users/me/Development/my-site/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
Traceback (most recent call last):
    32: from /Users/me/.rvm/gems/ruby-2.6.3/bin/ruby_executable_hooks:24:in `<main>'
    31: from /Users/me/.rvm/gems/ruby-2.6.3/bin/ruby_executable_hooks:24:in `eval'
    30: from /Users/me/.rvm/gems/ruby-2.6.3/bin/jekyll:23:in `<main>'
    29: from /Users/me/.rvm/gems/ruby-2.6.3/bin/jekyll:23:in `load'
    28: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/exe/jekyll:15:in `<top (required)>'
    27: from /Users/me/.rvm/gems/ruby-2.6.3/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
    26: from /Users/me/.rvm/gems/ruby-2.6.3/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
    25: from /Users/me/.rvm/gems/ruby-2.6.3/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
    24: from /Users/me/.rvm/gems/ruby-2.6.3/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
    23: from /Users/me/.rvm/gems/ruby-2.6.3/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
    22: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/commands/build.rb:18:in `block (2 levels) in init_with_program'
    21: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/command.rb:89:in `process_with_graceful_fail'
    20: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/command.rb:89:in `each'
    19: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/command.rb:89:in `block in process_with_graceful_fail'
    18: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/commands/build.rb:36:in `process'
    17: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/commands/build.rb:65:in `build'
    16: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/command.rb:28:in `process_site'
    15: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/site.rb:77:in `process'
    14: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/site.rb:211:in `cleanup'
    13: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/cleaner.rb:15:in `cleanup!'
    12: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/cleaner.rb:25:in `obsolete_files'
    11: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/cleaner.rb:59:in `new_files'
    10: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/cleaner.rb:59:in `tap'
     9: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/cleaner.rb:60:in `block in new_files'
     8: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/site.rb:342:in `each_site_file'
     7: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/site.rb:342:in `each'
     6: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/site.rb:343:in `block in each_site_file'
     5: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/site.rb:343:in `each'
     4: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/site.rb:344:in `block (2 levels) in each_site_file'
     3: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/cleaner.rb:60:in `block (2 levels) in new_files'
     2: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/static_file.rb:58:in `destination'
     1: from /Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/static_file.rb:161:in `url'
/Users/me/.rvm/gems/ruby-2.6.3/gems/jekyll-4.0.0/lib/jekyll/static_file.rb:148:in `cleaned_relative_path': undefined method `length' for nil:NilClass (NoMethodError)

Upvotes: 3

Views: 1113

Answers (2)

jdar
jdar

Reputation: 312

I ran into this too.

Add this branch to your Gemfile:

gem "jekyll-minimagick", github: "benubois/jekyll-minimagick", branch: "patch-1"

It's the only branch I've found that adds the variables that are newly required by Jekyll 4.

Upvotes: 2

ashmaroli
ashmaroli

Reputation: 5434

jekyll-minimagic hasn't been updated since 2016.

but removing this plugin does not fix the problem

Are you sure that you've removed this plugin completely or there are none else inside the _plugins directory?

Simply removing a plugin from the config file may not be sufficient.
If you have listed the plugin under the :jekyll_plugins group in your Gemfile, that could load the plugin automatically.

Upvotes: 2

Related Questions