LoginSignup
2
0

More than 3 years have passed since last update.

Gem::MissingSpecVersionErrorでrails serverできない

Last updated at Posted at 2020-01-26

問題

「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/にアクセスして画面が表示されるか確認する。

”無事に画像も表示されて、サーバーを立ち上げることができました!”

参考

gem installでpermissionエラーになった時の対応方法

2
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
2
0