エラー内容
rails new
しようとしたところ次のエラーが発生。
$ rails new .
<internal:/Users/hoge/.rbenv/versions/3.2.0/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:148:in `require': dlopen(/Users/hoge/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0/gems/stringio-3.0.8/lib/stringio.bundle, 0x0009): tried: '/Users/hoge/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0/gems/stringio-3.0.8/lib/stringio.bundle' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/stringio.bundle' (no such file), '/usr/lib/stringio.bundle' (no such file) - /Users/hoge/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0/gems/stringio-3.0.8/lib/stringio.bundle (LoadError)
エラー内容から、arm64eアーキテクチャが必要なところx86_64で呼び出しされていることが原因だと判明。
解決方法
以下コマンドを実行
$ rbenv uninstall 3.2.0
$ arch -arm64e rbenv install 3.2.0
$ gem install bundler
$ gem install rails
arm64e向けのrubyをインストールすることでRubyとその関連のgemもarm64e向けにコンパイルされました。
再度rails new
を実行しようとしたところうまくいきました。
プラスの学び
x86_64
現在広く使われるコンピュータのアーキテクチャであり64ビットのx86アーキテクチャの拡張版。「複雑な処理」を「少ない命令」で実行しようとする思想を持ち、高速な演算、互換性などが特徴。
arm64e
ARM社が開発したCPUアーキテクチャの一つ。「単純な命令のみを備えて効率を向上させよう」という思想を持ち、スマホ・タブレット・サーバーなどに利用され、高いエネルギー効率と高速処理、セキュリティ向上などが特徴。
なんとなーくで学習してしまっていたのでCPUアーキテクチャの復習になりました!
こちらの記事で詳しく書いてらっしゃる方がいたので勉強になりました!
https://qiita.com/Lion_rion/items/bd17381031648fabaa81