1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rails s が実行できない【エラー:LoadError(nokogiri), RuntimeError/ENOENT(webpacker)】【ターミナル再起動】

Last updated at Posted at 2021-11-07

ターミナルで 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 versionsruby --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 は、
 ターミナルを起動したときなどに(自動的に)中身を実行してくれるファイルなので、
 こうしておくと、次回以降ターミナルを起動した際に、自動的にパスを通してくれる

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?