ruby-on-railsrubyrubygemsnokogirimacos-mojave

ERROR: While executing gem ... (TypeError) incompatible marshal file format (can't be read)


I encountered this issue when I run bundle install with Ruby version 2.4.4 and macOS Mojave:

Fetching nokogiri 1.8.5
Installing nokogiri 1.8.5 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
ERROR: cannot discover where libxml2 is located on your system. please
make sure `pkg-config` is installed.

So I ran

xcode-select --install

But then when I run gem install nokogiri I got the following output:

ERROR:  While executing gem ... (TypeError)
    incompatible marshal file format (can't be read)
    format version 4.8 required; 60.33 given

I tried to set my cookies_serializer to :hybrid:

Rails.application.config.action_dispatch.cookies_serializer = :hybrid

But nothing worked.

Is there a way to fix this? I cannot even run my Rails server right now.


Solution

  • Thanks to Morgan Jarry answer, this is what worked for me :

    I checked my current sources and indeed they were outdated :

    gem sources
    

    It printed

    *** CURRENT SOURCES ***
    http://gems.rubyforge.org/
    http://gems.github.com
    

    So I ran this script to remove them and replaced them with https://rubygems.org/

    gem sources -r  http://gems.rubyforge.org/
    gem sources -r http://gems.github.com
    gem sources -a https://rubygems.org/