Upgrading a Mac Operating System to a newer version brings a lot of cool new features, but it can also bring some compatibility issues.
I ran into this problem after formatting the MacBook Pro with a clean install of macOS Catalina. But I think it can also occur when upgrading straight from High Sierra (previous version of Catalina).
When trying to run the command
gem install compass the following errors are prompt from the terminal window. These are some of the tips following tips that helped me solve the problem after doing some research.
mkmf.rb can’t find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/include/ruby.h
You might have to install separate package for the ruby development environment, ruby-dev or ruby-devel for example.
Results logged to /Library/Ruby/Gems/2.6.0/extensions/universal-darwin-19/2.6.0/ffi-1.12.2/gem_make.out prompt has been recorded in the error log here gem_make.out this file, you can go directly from the finder view.
After hours of research and several trial and errors, I came to this method to solve the problem.
First I ran a system update, this is the first step from the Compass docs prior the install.
$ gem update —system
The next step is to first grab the installer and execute some commands that will let the system choose another Ruby version rather than the one that comes with macOS Catalina by default.
$ curl -L https://get.rvm.io | bash -s stable
$ rvm install ruby-2.6 $ rvm use ruby-2.6.3 $ rvm -—default use 2.6.3
Once the proper version of Ruby is installed, the last thing needed is to run the Compass installation command.
$ gem install compass
If writing permissions errors are prompted, you may want to use sudo. Although this practice is not recommended, it can let you run the command.
As said before, a new Mac Operating System can break or bring incompatibility issues in your dev environment.
It is very important to be aware of this prior an major update. Fortunately, the dev community is very generous and as soon as this issues are spotted, everyone is willing to raise their issues and share solutions.