kurtsson / jekyll-multiple-languages-plugin

I18n support for Jekyll and Octopress
MIT License
923 stars 201 forks source link

jekyll doctor error #158

Open alexandre1985 opened 4 years ago

alexandre1985 commented 4 years ago
$ jekyll --version
jekyll 3.8.6

When I run jekyll doctor, I do not know why I get this issue below:

$ jekyll doctor
Configuration file: /home/daniel/dev/projectos/freewriters-jekyll/_config.yml
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.6/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.6/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
jekyll 3.8.6 | Error:  undefined method `include?' for nil:NilClass
Traceback (most recent call last):
        29: from /home/daniel/.gem/ruby/2.7.0/bin/bundle:23:in `<main>'
        28: from /home/daniel/.gem/ruby/2.7.0/bin/bundle:23:in `load'
        27: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/exe/bundle:34:in `<top (required)>'
        26: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
        25: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/exe/bundle:46:in `block in <top (required)>'
        24: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in `start'
        23: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
        22: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in `dispatch'
        21: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
        20: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        19: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        18: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in `exec'
        17: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in `run'
        16: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `kernel_load'
        15: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `load'
        14: from /home/daniel/.gem/ruby/2.7.0/bin/jekyll:23:in `<top (required)>'
        13: from /home/daniel/.gem/ruby/2.7.0/bin/jekyll:23:in `load'
        12: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.6/exe/jekyll:15:in `<top (required)>'
        11: from /home/daniel/.gem/ruby/2.7.0/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
        10: from /home/daniel/.gem/ruby/2.7.0/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
         9: from /home/daniel/.gem/ruby/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
         8: from /home/daniel/.gem/ruby/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
         7: from /home/daniel/.gem/ruby/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
         6: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.6/lib/jekyll/commands/doctor.rb:17:in `block (2 levels) in init_with_program'
         5: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.6/lib/jekyll/commands/doctor.rb:25:in `process'
         4: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.6/lib/jekyll/site.rb:164:in `read'
         3: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.6/lib/jekyll/reader.rb:16:in `read'
         2: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.6/lib/jekyll/reader.rb:50:in `read_directories'
         1: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.6/lib/jekyll/reader.rb:64:in `retrieve_posts'
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-multiple-languages-plugin-1.6.0/lib/jekyll-multiple-languages-plugin.rb:182:in `read_posts': undefined method `include?' for nil:NilClass (NoMethodError)

I believe it is an bug. my _config.yml snippet is:

...
# i18N
languages: ['en']

# SASS
sass:
  sass_dir: assets/_sass-partials
  style: compressed

defaults:
  - scope:
      type: "pages"
    values:
      layout: "main"

permalink: pretty
...

Update: Also on my other jekyll project that has two i18n languages, I get:

$ jekyll doctor
Configuration file: /home/daniel/dev/projectos/pagina-pessoal/_config.yml
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:41: warning: Using the last argument as keyword parameters is deprecated
       Jekyll Feed: Generating feed for posts
         AutoPages: Disabled/Not configured in site.config.
        Pagination: Complete, processed 5 pagination page(s)
jekyll 3.8.5 | Error:  no implicit conversion of nil into String
Traceback (most recent call last):
        39: from /home/daniel/.gem/ruby/2.7.0/bin/bundle:23:in `<main>'
        38: from /home/daniel/.gem/ruby/2.7.0/bin/bundle:23:in `load'
        37: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/exe/bundle:34:in `<top (required)>'
        36: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
        35: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/exe/bundle:46:in `block in <top (required)>'
        34: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in `start'
        33: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
        32: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in `dispatch'
        31: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
        30: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        29: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        28: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in `exec'
        27: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in `run'
        26: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `kernel_load'
        25: from /home/daniel/.gem/ruby/2.7.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `load'
        24: from /home/daniel/.gem/ruby/2.7.0/bin/jekyll:23:in `<top (required)>'
        23: from /home/daniel/.gem/ruby/2.7.0/bin/jekyll:23:in `load'
        22: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/exe/jekyll:15:in `<top (required)>'
        21: from /home/daniel/.gem/ruby/2.7.0/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
        20: from /home/daniel/.gem/ruby/2.7.0/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
        19: from /home/daniel/.gem/ruby/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
        18: from /home/daniel/.gem/ruby/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
        17: from /home/daniel/.gem/ruby/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
        16: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/commands/doctor.rb:17:in `block (2 levels) in init_with_program'
        15: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/commands/doctor.rb:26:in `process'
        14: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/site.rb:173:in `generate'
        13: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/site.rb:173:in `each'
        12: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/site.rb:175:in `block in generate'
        11: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-sitemap-1.4.0/lib/jekyll/jekyll-sitemap.rb:13:in `generate'
        10: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-sitemap-1.4.0/lib/jekyll/jekyll-sitemap.rb:65:in `file_exists?'
         9: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-sitemap-1.4.0/lib/jekyll/jekyll-sitemap.rb:65:in `any?'
         8: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-sitemap-1.4.0/lib/jekyll/jekyll-sitemap.rb:65:in `block in file_exists?'
         7: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/page.rb:101:in `url'
         6: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/page.rb:87:in `template'
         5: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/page.rb:171:in `html?'
         4: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb:89:in `output_ext'
         3: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb:45:in `output_ext'
         2: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb:250:in `permalink_ext'
         1: from /home/daniel/.gem/ruby/2.7.0/gems/jekyll-multiple-languages-plugin-1.6.0/lib/jekyll-multiple-languages-plugin.rb:209:in `permalink'
/home/daniel/.gem/ruby/2.7.0/gems/jekyll-multiple-languages-plugin-1.6.0/lib/jekyll-multiple-languages-plugin.rb:209:in `+': no implicit conversion of nil into String (TypeError)
Clpsplug commented 3 years ago

This is still reproducible.

The line number of the culprit may have changed between versions (I have 1.7.0) because the stack trace above does not point to anything meaningful in my copy of the plugin, but it must be crashing trying to validate stuff because there is no lang key in the site.config hash.

This key doesn't need to be present in the config file, though; it is extracted from the languages key in the Site::process method.

I suspect the Site::process is not getting called (most likely by design) in the case of running jekyll doctor; I can confirm it by removing the languages key from the config file and running jekyll doctor - it crashes with the same stack trace instead of giving human-readable errors.

I do not know anything about Jekyll's internal structure, but there may be a method which the jekyll doctor command calls.

bundle exec jekyll --version
jekyll 4.1.1