macOS BigSurでRuby on Rails 6.1 on Ruby 3.0.2を使っていたところ、以下のエラーがでた。
% rails test mkdir: /usr/local/bin/../version_cache: Permission denied /usr/local/bin/rbenv-communal-gem-home: line 21: /usr/local/bin/../version_cache/3.0.2: No such file or directory /Users/next49/.rbenv/gems/3.0.0/gems/bootsnap-1.9.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require': dlopen(/Users/next49/.rbenv/gems/3.0.0/gems/ffi-1.15.4/lib/ffi_c.bundle, 9): Library not loaded: /usr/local/opt/libffi/lib/libffi.7.dylib Referenced from: /Users/next49/.rbenv/gems/3.0.0/gems/ffi-1.15.4/lib/ffi_c.bundle Reason: image not found - /Users/next49/.rbenv/gems/3.0.0/gems/ffi-1.15.4/lib/ffi_c.bundle (LoadError) 〜以下略〜
エラーメッセージのとおり、/usr/local/opt/libffi/lib/libffi.7.dylib を読み込もうとしたところ、このファイルがないらしい。確認してみると確かにない。
% ls -1 /usr/local/opt/libffi/lib/ libffi.8.dylib libffi.a libffi.dylib pkgconfig
brew update & brew upgradeしたときにバージョンアップしてしまったのだと思う。rbenvでインストールしているRubyやrubygemをインストールしなおせばよいのだけど、めんどくさいのでシンボリックリンクで対応する。
% cd /usr/local/opt/libffi/lib/ % sudo ln -s libffi.8.dylib libffi.7.dylib % ls -1 /usr/local/opt/libffi/lib/ libffi.7.dylib libffi.8.dylib libffi.a libffi.dylib pkgconfig
これで無事に動いた。