Error: no implicit conversion of Hash into Integer

Hi. I’m trying to follow the github-pages guide for jekyll. I’m not having much luck. because it keeps crashing when I run:

$ bundle exec jekyll serve     
Configuration file: /home/user/Documents/blog/docs/_config.yml
            Source: /home/user/Documents/blog/docs
       Destination: /home/user/Documents/blog/docs/_site
Incremental build: disabled. Enable with --incremental
       Jekyll Feed: Generating feed for posts
                    done in 0.223 seconds.
jekyll 3.9.0 | Error:  no implicit conversion of Hash into Integer
/home/user/.local/share/gem/ruby/3.0.0/gems/pathutil-0.16.2/lib/pathutil.rb:502:in `read': no implicit conversion of Hash into Integer (TypeError)
        from /home/user/.local/share/gem/ruby/3.0.0/gems/pathutil-0.16.2/lib/pathutil.rb:502:in `read'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/jekyll-3.9.0/lib/jekyll/utils/platforms.rb:75:in `proc_version'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/jekyll-3.9.0/lib/jekyll/utils/platforms.rb:40:in `bash_on_windows?'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/jekyll-3.9.0/lib/jekyll/commands/build.rb:77:in `watch'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/jekyll-3.9.0/lib/jekyll/commands/build.rb:43:in `process'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/jekyll-3.9.0/lib/jekyll/commands/serve.rb:93:in `block in start'

I installed bundle and jekyll the reccomended way

The version of jekyll available in my path is 4.2.0. I discovered this by running jekyll -v. But I had to run this outside of the project directory. if I run jekyll -vin the poject directory it gives the following output

$ jekyll -v
/home/user/.local/share/gem/ruby/3.0.0/gems/bundler-2.2.16/lib/bundler/runtime.rb:302:in `check_for_activated_spec!': You have already activated i18n 1.8.10, but your Gemfile requires i18n 0.9.5. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)
        from /home/user/.local/share/gem/ruby/3.0.0/gems/bundler-2.2.16/lib/bundler/runtime.rb:31:in `block in setup'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/bundler-2.2.16/lib/bundler/spec_set.rb:152:in `each'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/bundler-2.2.16/lib/bundler/spec_set.rb:152:in `each'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/bundler-2.2.16/lib/bundler/runtime.rb:26:in `map'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/bundler-2.2.16/lib/bundler/runtime.rb:26:in `setup'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/bundler-2.2.16/lib/bundler.rb:148:in `setup'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/jekyll-4.2.0/lib/jekyll/plugin_manager.rb:52:in `require_from_bundler'
        from /home/user/.local/share/gem/ruby/3.0.0/gems/jekyll-4.2.0/exe/jekyll:11:in `<top (required)>'
        from /home/user/.local/share/gem/ruby/3.0.0/bin/jekyll:23:in `load'
        from /home/user/.local/share/gem/ruby/3.0.0/bin/jekyll:23:in `<main>'

Any ideas why this is?

Thank you

Github-Pages uses Jekyll 3.9, which isn’t compatible with Ruby 3. Downgrading to Ruby 2.7 should avoid the problem.

Yes agree to Ruby 2.7. And don’t use plain global jekyll which is 4.

Within your project only use bundle exec jekyll which 3.9 and that is the appropriate version for GH Pages.

If you still have issues, check your config and frontmatter and any references to paths in your files. It looks like an unexpected data type on your code. But then again it might not be your code and it is a system issue.

If you can move all your content of your repo temporarily to another directory so you only have Gemfile, vendor and an almost empty (not even config), then you can run the serve command there and then you’ll see that Jekyll can work alone. Then start bringing your code back in to the directory and see which file causes a break if at all.

You can also setup a new directory locally to test Jekyll itself using a template

cd my-repo
bundle exec jekyll new ~/repos/test
cd !$   # Same as cd ~/repos/test

# maybe bundle install steps.
# ...

bundle exec jekyll serve --trace

Please provide a repo link too if you figure out that you can get Jekyll to run for a new project but not your existing one.