After upgrading to macOS Ventura, I decided to upgrade my Ruby version and ran into issues trying to build my site locally.
As I’ve written before, I use Jekyll to build this site and I host with NearlyFreeSpeech. I was upgrading to Ruby 2.7.6, which I realize is old and near its end of life. However, this is the version installed on NearlyFreeSpeech and I need my local environment to match that. Because of how NearlyFreeSpeech operates, I cannot upgrade Ruby on my server on my own. Instead, I must wait for the sysadmins to perform upgrades. It’s not ideal, but I rarely have issues. Overall their service is stable and inexpensive, so I have no complaints.
Anyway, installing a new version of Ruby on my Mac meant I needed to perform a fresh
bundle install, and that’s where the trouble started. Most of the time this “just works” because I’m diligent about staying up-to-date. However, my
bundle install failed with the following error:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /usr/local/var/rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/eventmachine-1.2.7/ext /usr/local/var/rbenv/versions/2.7.6/bin/ruby -I /usr/local/var/rbenv/versions/2.7.6/lib/ruby/site_ruby/2.7.0 extconf.rb [....] An error occurred while installing eventmachine (1.2.7), and Bundler cannot continue. In Gemfile: jekyll-archives was resolved to 2.2.1, which depends on jekyll was resolved to 4.3.1, which depends on em-websocket was resolved to 0.5.3, which depends on eventmachine
A transitive dependency from Jekyll,
eventmachine 1.2.7, failed to install because it could not build native extensions. These problems are no fun to debug, especially because I am not a Ruby expert. Luckily, after some searching online, I found a solution here. If you also run into this problem, you need to install
eventmachine with the following flags:
gem install eventmachine -v '1.2.7' -- --with-ldflags="-Wl,-undefined,dynamic_lookup"
bundle install succeeded!