M1 mac(Apple Silicon)でRuby on Railsの環境構築とエラー対処法

ruby-on-railsプログラミング

Ruby on RailsでLine Botを作ろうとした時に、環境構築にかなり手こずったのでその備忘録

こちらを参考にしています

開発環境

Homebrew 3.3.5
rbenv 1.2.0
ruby 3.0.2
Bundler 2.2.32
yarn 1.22.17
(↑環境構築中にversionが古い事が原因のエラーもありました、これが最終的な状態です)

それぞれインストールされていない物があった場合こちらを参考にしてください

アプリ作成! rails sでlocalhostで立ち上げるまで

問題発生その1

gem install postgresqlが出来ない;;

m1だと、gem install postgresqlができなかったので、

arch -arm64 brew install postgresql

でインストール


brew services start postgresql

postgresqlを起動

適当なディレクトリ作って入る

mkdir newBot
cd newBot

Gemfileを作成

bundle init

作成されたGemfileの# gem "rails"のコメントアウトを解除


問題発生その2

bundle install –path=vendor/bundleで失敗;;

この対処法としてrubyのバージョン変更を採用
元々2.6.3が入っていたが、これではダメだった…

対処法

rbenv install --list

で表示される、ノーマークの最新バージョン(ここ大事)の3.0.2をインストール

arch -arm64 rbenv install 3.0.2

ここでもarch -arm64を付けないと失敗する

export PATH="~/.rbenv/shims:/usr/local/bin:$PATH" eval "$(rbenv init -)"

を.zshrcに追加して、

source ~/.zshrc

こちら参考

rbenv global 3.0.2
bundle install --path=vendor/bundle

でやっと成功! :)

rails new newBot -d postgresql

でアプリ作成しようとすると…

問題発生その3

railsコマンドが効かない;;

↓エラー文
Rails is not currently installed on this system. To get the latest version, simply type:
$ sudo gem install rails
You can then rerun your "rails" command.

対処法

hash -r

で解決! こちら参考

再びrails new linebot -d postgresqlで成功!かと思いきや…

問題発生その4

アプリのディレクトリは出来たけど、なんかエラー出てる

↓エラー文
In Gemfile:
pg

**run**  bundle binstubs bundler

Could not find gem 'pg (~> 1.1)' in locally installed gems.

**rails**  webpacker:install

Could not find gem 'pg (~> 1.1)' in locally installed gems.

対処法

arch -arm64 gem install pg -v '1.2.3'

でインストールし直す


bundle install
arch -arm64 brew install yarn

問題発生その5

rails db:createできない;;

ここ最難関でした;;

msgpackがよろしくないという記事はちょこちょこあったのですが、結局どの対処法が正解なのかはわからず…

無限にこのエラーが出る

対処法

arch -arm64 gem install msgpack bootsnap bindex zeitwerk activesupport spring webpacker railties rack thor nio4r puma bootsnap activesupport ffi

でインストールし直す
で解決できるはず…(これで困ったのは私だけなのかな…?)


rails webpacker:install

を入れる

これで

rails s

が成功します💪

おまけ

毎回arch -arm64をつけるのめんどくさいと思うので、

alias m1="arch -arm64"

など、.zshrcにエイリアス設定しておくと、毎回arch -arm64ではなくm1と打てばいいので楽です

その他プログラミング記事はこちら

コメント

タイトルとURLをコピーしました