ターミナルで rails s
を実行した際に起こったエラーたち
##環境
OS:macOS Monterey12.0.1
Rails:6.1.4.1(2021/11/07現在最新版)
前提となる、Ruby(3.0.2), SQLite3(3.36.0), Node.js(16.13.0), Yarn(1.22.17), Homebrew(3.3.2), rbenv(1.2.0) はインストール済み(2021/11/07現在最新版)
##まず最初に確認すべきこと
ターミナルで、
(作業したいディレクトリに移動した上で)rbenv versions
や ruby --version
を実行し、
今自分のディレクトリ内で動いている ruby の version が、
動かしたい version であるかどうかを確認する。
もし違うなら rbenv local 3.0.2(動かしたい version)
で version を切り替え、
もう一度 rails s
を実行してみる。
##問題1: nokogiriに関するエラー(LoadError)
cannot load such file -- nokogiri/nokogiri (LoadError)
:
(省略)
:
dlopen(/Library/Ruby/Gems/2.6.0/gems/nokogiri-1.12.5-x86_64-darwin/lib/nokogiri/2.6/nokogiri.bundle, 0x0009): tried: '/Library/Ruby/Gems/2.6.0/gems/nokogiri-1.12.5-x86_64-darwin/lib/nokogiri/2.6/nokogiri.bundle' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/lib/nokogiri.bundle' (no such file) - /Library/Ruby/Gems/2.6.0/gems/nokogiri-1.12.5-x86_64-darwin/lib/nokogiri/2.6/nokogiri.bundle (LoadError)
##解決方法
nokogiriを再インストール
1. gem uninstall nokogiri
でnokogiriを一旦アンインストール
2. Gemfileに gem 'nokogiri', '~>1.12.5'
を記述
3. nokogiri (1.11.1-arm64-darwin)
をGemfile.lockから削除
4. gem install nokogiri
を実行
##問題2: webpackerに関するエラー(RuntimeError, ENOENT)
Webpacker configuration file not found /Users/<ユーザ名>/Programming/tweet/config/webpacker.yml. Please run rails webpacker:install Error: No such file or directory @ rb_sysopen - /Users/<ユーザ名>/Programming/tweet/config/webpacker.yml (RuntimeError)
:
(省略)
:
No such file or directory @ rb_sysopen - /Users/miyu/Programming/tweet/config/webpacker.yml (Errno::ENOENT)
##解決方法
言われている通りに、rails webpacker:install
を実行
##問題3: ターミナルの再起動
ターミナルを再起動すると、実行できたはずの rails s
が実行できなくなっていたり、railsやyarnやnokogiriなどをwhichコマンドで探すと見つからなかったり再起動前とは違う場所が表示されたりする問題
##解決方法: パスを通す
「パスを通す」とは、コンピュータに実行ファイルの在り処を教えてあげること
これにより、どこからでもその実行ファイルを呼び出せるようになる
####パスの通し方
ターミナルで以下の3つのコマンドを入力
ただし、【PATH=[実行ファイルの場所]:$PATH】
実行ファイルの場所は以下とは違う可能性があるため要確認
$export PATH=/opt/homebrew/bin:$PATH
$export PATH=~/.npm-global/bin:$PATH
eval "$(rbenv init -)"
次回以降ターミナルを起動した際にパスを自動で通す方法(押すと詳細が開きます)
ターミナルで echo $SHELL
の実行結果が
/bin/bash
なら /User/<ユーザ名>/.bash_profile(隠しファイル)
を
/bin/zsh
なら /User/<ユーザ名>/.zshrc(隠しファイル)
をエディタで開いて、
さきほどの3つのコマンドを記述する
ちなみに、.bash_profile
や .zshrc
は、
ターミナルを起動したときなどに(自動的に)中身を実行してくれるファイルなので、
こうしておくと、次回以降ターミナルを起動した際に、自動的にパスを通してくれる