Help us understand the problem. What is going on with this article?

【Rails】railsのインストール時に出たエラーの解決

状況

ドットインストールのローカル開発環境の構築 [macOS編]にてローカル開発環境を整え、Ruby on Rails 5入門をやってみようとしたところ、Railsのインストールに少し苦戦したので、対応した手順と方法をまとめます。
rubyのバージョン管理にはドットインストールに従いrbenvを使用しています。

エラー

rubyのバージョンが原因だったがその過程でなんかよく分からないエラーも発生しました。
作業前のrubyのバージョンは、
ruby 2.3.1
以下に時系列に沿って発生した事象と対応した方法を書きます。

railsをインストールしようとするとruby2.4.4が必要よ と言われる

下記のエラー表記以外にもなんかごちやごちゃ文字が出てきたがこれが、ERRORって書いてあるし、エラーだろうと思い、rubyのバージョンを2.4.4にすることにした。

ターミナル
$ gem install rails --no-document
〜省略〜
ERROR:  Error installing rails:
    zeitwerk requires Ruby version >= 2.4.4.

rubyのバージョンアップ

rubyのバージョンアップはこれまたドットインストールに従い、の補足情報に記載の下記のコマンドで対応。(※それぞれのコマンドの実行結果は省略)

ターミナル
$ cd ~/.rbenv
$ git pull origin master
$ cd ~/.rbenv/plugins/ruby-build 
$ git pull origin master
$ rbenv install 2.4.4
$ rbenv global 2.4.4
$ rbenv rehash

$ ruby -v
ruby 2.4.4p296 (2018-03-28 revision 63013) [x86_64-linux]

ruby2.4.4にバージョンアップできました。

再度railsをインストールしようとするも今度はruby2.4.4が必要よ と言われる

ruby2.4.4が必要よと言われた時と同様に、エラー表記以外にもなんかごちゃgちゃ文字が出てきたが、さっきと同じっぽいし、またrubyのバージョンあげりゃいいんだろと理解。rubyのバージョンを2.5.0にすることにした。

ターミナル
ERROR:  Error installing rails:
    activesupport requires Ruby version >= 2.5.0.

rubyのバージョンアップ再び

ruby2.4.4へのバージョンアップ同様、下記コマンドで、バージョンのところだけ2.5.0に変えて実行。(※それぞれのコマンドの実行結果は省略)

ターミナル
$ cd ~/.rbenv
$ git pull origin master
$ cd ~/.rbenv/plugins/ruby-build 
$ git pull origin master
$ rbenv install 2.5.0
$ rbenv global 2.5.0
$ rbenv rehash
$ ruby -v

すると、$ rbenv install 2.5.0
で下記のエラーが出ました。

ターミナル
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2
Installing ruby-2.5.0...

BUILD FAILED (CentOS release 6.10 (Final) using ruby-build 20190615-11-ga375141)

Inspect or clean up the working tree at /tmp/ruby-build.20190824170859.29985
Results logged to /tmp/ruby-build.20190824170859.29985.log

Last 10 log lines:
prelude.c: In function ‘prelude_eval’:
prelude.c:204: error: #pragma GCC diagnostic not allowed inside functions
prelude.c:205: error: #pragma GCC diagnostic not allowed inside functions
prelude.c:221: error: #pragma GCC diagnostic not allowed inside functions
トップレベル:
cc1: 警告: unrecognized command line option "-Wno-self-assign"
cc1: 警告: unrecognized command line option "-Wno-constant-logical-operand"
cc1: 警告: unrecognized command line option "-Wno-parentheses-equality"
cc1: 警告: unrecognized command line option "-Wno-tautological-compare"
make: *** [prelude.o] エラー 1

新たなエラーの解消

ターミナル 上記エラーの抜粋
Inspect or clean up the working tree at /tmp/ruby-build.20190824170859.29985

何かよく分からないがrubyのバージョンアップの邪魔をするファイルができてしまったらしく、/tmp/ruby-build.20190824170859.29985を調べろ(inspect)または取り除け(clean up)と言っているので、下記コマンドにて削除。

ターミナル
$ rm /tmp/ruby-build.20190824170859.29985
rm: cannot remove `/tmp/ruby-build.20190824170859.29985': ディレクトリです

ファイルではなく、ディレクトリだったので、改めて下記コマンドで削除。

ターミナル
rm -r /tmp/ruby-build.20190824170859.29985

するとたくさんメッセージが出てきたので、全部Enterで突破。
確認がめんどくさい時は、rm -r ではなくrm -rfとすれば良いとのこと。
また、実行の途中でやり直したい時はControl + cで、中断しても問題ないところでコマンドを終了してくれるとのこと。

ターミナル
rm: remove write-protected 通常ファイル `/tmp/ruby-build.20190824170859.29985/ruby-2.5.0/gems/minitest-5.10.3/History.rdoc'?
〜省略〜
rm: cannot remove `/tmp/ruby-build.20190824170859.29985/ruby-2.5.0/gems/minitest-5.10.3/test/minitest': ディレクトリは空ではありません

改めてrubyのバージョンアップ

ruby2.5.0以上をとエラーメッセージが出ていたので、2.5.0をインストールしようとしていたが、Railsチュートリアルで2.6系を使ってるようで、ruby2.6.3をインストールすることにしました。そしてこれまで打っていたgit pull 的なコマンドは一回打ってるから必要ないとのことで、下記コマンドのみ実行。

ターミナル
$ rbenv install 2.6.3
$ rbenv global 2.6.3
$ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

ruby2.6.3にバージョンアップできました。

railsをインストール

これでrailsがインストールできるはず。

ターミナル
$ gem install rails --no-document

$ rails -v
Rails 6.0.0

やっとRailsがインストールできました。しかし、ドットインストールはRails5のレッスン。。そしてRailsチュートリアルはRails 5.1.6。。。。。
せっかくインストールできだが、ダウングレードしないと。。

Railsのダウングレード

ということで参考にリンクをのせたQiita記事を参考にダウングレード。
まずはアンインストール。

ターミナル
$ gem uninstall rails
Successfully uninstalled rails-6.0.0
$ rails -v
Rails 6.0.0
$ gem uninstall railties -v '6.0.0'
Remove executables:
    rails

in addition to the gem? [Yn]
Removing rails
Successfully uninstalled railties-6.0.0
$ rails -v
rbenv: rails: command not found

アンインストールできたので、バージョンを指定して再インストール。

ターミナル
$ gem install rails -v '5.1.6'


rails -v
Rails 5.1.6

Rails 5.1.6がインストールできました。

最後に

自分で解決したような風に書いてますが、お友達の@oratakeさんに聞きまくって解決しているので、自力で解決したわけではありません笑

さてこれから本腰入れてローカル開発環境でRailsをやっていきます。

参考

3分でできるRailsダウングレード
ドットインストール Ruby on Rails 5入門 #01 Ruby on Railsを使ってみよう

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away