😺

Ralisでrails db:createができなかった時の対処法

2023/11/16に公開

状況

Railsでrails db:createをしてデータベースを作ろうと思ったら、以下のようなエラーが出ました。

taro % rails db:create
Running via Spring preloader in process 84078
objc[84078]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called.
objc[84078]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.

解決策

ChatGptに相談したら解決できました。
上のエラーは、MacOSの環境でRailsアプリケーションを実行する時によく発生するエラーみたいです。
このエラーは、Springプリローダー(Spring preloader)とObjective-Cの初期化関数がフォーク(fork)の際に問題を引き起こしているみたいです。

  1. Springを無効にする: 一時的な解決策として、Springを無効にすることができるみたいです。
$ export DISABLE_SPRING=true

これで解決しました。

他にも
Railsのバージョンをアップデート、
Springをアップデートも方法としてはあるみたいです。

bundle update spring

Discussion