経緯
業務で既存サービスのローカルサーバーを立ち上げ、ビューを表示しようとした際に、以下のエラーが発生しました。
TypeError: no implicit conversion of BigDecimal into String
このエラーの発生により、原因を調査することになりました。
原因
最初は MySQL の設定に問題があると考えましたが、rails db:migrate
を実行した際に、以下のエラーが表示され、MySQL が直接の原因ではないと気づきました。
/Users/niinomimadoguchi/osouji.support/vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.4/lib/active_record/migration.rb:1423:in `crc32'
その後、vendor
フォルダを削除し、以下のコマンドを実行したところ。
bundle install --path ./vendor/bundle
ffi
に関連するエラーが発生。このエラーについて調査すると、ffi
が Xcode に関連する gem であることが判明しました。
xcodebuild -version
上記のコマンドで Xcode のバージョンを確認したところ、最新のバージョン 16 がインストールされていました。
この Xcode の影響で gem のビルドに問題が発生していたと考えられます。
※Xcodeは業務では使いませんが、勉強のために数日前に環境構築をしていました。
解決方法
-
Xcode を削除
以下のコマンドを使用して Xcode をアンインストールしました:sudo rm -rf /Applications/Xcode.app
-
再インストール
必要に応じて Xcode を再インストールする場合は、App Store から適切なバージョンをインストールします。 -
再度 Bundler のインストール
Xcode を削除後、以下を実行することで問題が解消されました:bundle install --path ./vendor/bundle
補足
問題の原因
- 最新の Xcode(特にバージョン 16 以降)は、特定の gem(特にネイティブ拡張を含むもの)との互換性に問題を引き起こすことがあります。
再発防止
- 必要のない環境で Xcode をインストールしないようにする。
- Xcode をインストールする場合は、Command Line Tools の設定や gem のビルドが正しく行えるか確認する。
結論
このエラーは Xcode のインストールが引き金となって gem のビルドに失敗したことで発生していました。Xcode を削除したことでエラーが解消し、無事に環境構築を進めることができました。