問題
「rails server」を実行しようとしたら、エラーが出た。
$ rails server
(Gem::MissingSpecVersionError)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.1.2`
解決策
以下のコマンドを実行する。
$ bundle update --bundler
$ gem install bundler:2.1.2
僕の場合、2つ目のコマンド「gem install bundler:2.1.2」でまたエラーが出たので対処する。
問題
「gem install bundler:2.1.2」を実行しようとすると、またエラーが出た。
$ gem install bundler:2.1.2
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
解決策
まずはgemやrubyがどのパスを指しているのか現状の確認をする。
以下の結果からわかるように/usr/binというシステムのパスを指していることがわかる。
$ which ruby
/usr/bin/ruby
$ which gem
/usr/bin/gem
調べると、システムのrubyを利用しているため、権限不足でgemのインストールができない可能性が高いみたいです。「gem installでpermissionエラーになった時の対応方法」が参考になりました。
rbenvでrubyを管理する
まずはrbenvのインストールする。
$ brew update
$ brew install rbenv ruby-build
続いて、rbenvの管理下にrubyをインストールする。
僕の場合は、Railsチュートリアルを進めているので、今回は2.6.1をインストールする。
rbenv install 2.6.1
globalで利用できるように変更する。
$ rbenv global 2.6.1
rbenvにパスを通すため、シェルの設定ファイル(.bashrcや.zshrc)に以下を追加する。
[[ -d ~/.rbenv ]] && \
export PATH=${HOME}/.rbenv/bin:${PATH} && \
eval "$(rbenv init -)"
シェルを再起動後、以下コマンドを実行して、もう一度gemとrubyのパスを確認してみる。
$ which ruby
$ which gem
はじめはシステムのパスを指していましたが、以下のようにrbenvのパスを指していることがわかる。
rails serverを実行する
$ rails server
rbenv: rails: command not found
The `rails' command exists in these Ruby versions:
2.7.0
Railsが見つからない?と言ってそうなので、Railsのバージョンを指定してインストールする。
$ gem install -v 5.1.6 rails
もう一度rails serverを実行する。
$ rails server
.
.
.
Use Ctrl-C to stop
立ち上がったっぽいので、http://localhost:3000/にアクセスして画面が表示されるか確認する。
”無事に画像も表示されて、サーバーを立ち上げることができました!”