Ruby 2.6.4 および mysql2 0.5.3 (arm64) を使用して Rails アプリを構築するときに LoadError (「フラット名前空間 mysql_affected_rows にシンボルが見つかりません」) を修正する方法
概要
私は Mac M1 マシンで Ruby on Rails アプリケーションに取り組んでいます。以前は、Ruby 2.5.5 と mysql2 0.5.1 (どちらも arm64) 上で同じアプリケーションをビルドできましたが、アップグレードが発生し、bundle exec Rails サーバーを実行すると、次のエラーが発生します。
require’:
dlopen(/vendor/bundle/ruby/2.6.0/extensions/-darwin-21/2.6.0/mysql2-0.5.3/mysql2/mysql2.bundle,
0x0009): フラット名前空間にシンボルが見つかりません
( _mysql_affected_rows) -
/vendor/bundle/ruby/2.6.0/extensions/-darwin-21/2.6.0/mysql2-0.5.3/mysql2/mysql2.bundle
(LoadError)
これまでのところ、私は次のようにしました:
これらすべての試みの後でも、同じロードエラーが発生します><
解決策
MySQL 5.7 を Homebrew for ARM とともにインストールしたため、私の Mac M2 でも同様の問題が発生しました。誰かを助けることができる場合に備えて、私がそれを修正するために実行した手順は次のとおりです。
mbrew remove [email protected]
intel
ibrew install [email protected]
gem install mysql2 -v x.x.x -- --with-mysql-config=/usr/local/opt/[email protected]/bin/mysql_config --with-ldflags=-L/usr/local/opt/[email protected]/lib --with-cppflags=-I/usr/local/opt/[email protected]/include
これで、arm を実行して ARM コンソールに戻り、ターミナルを完全に閉じて、もう一度「Rosetta を使用して開く」にチェックを入れることができます。