Techioz Blog

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 を使用して開く」にチェックを入れることができます。