LoginSignup
3
6

More than 5 years have passed since last update.

Railsチュートリアルに従ってたらrails newでエラーが出る

Last updated at Posted at 2015-03-09

初めてRuby on Railsを使ってみる初心者です。
「Ruby on Rails」でググってWikipediaの次に出てくるチュートリアル( http://railstutorial.jp/ )を参考に進めることにしました。

しかしこのチュートリアル通りに進めるとエラーが出たので、記録を残しておきます。
同じチュートリアルを参考にする方の参考になれば幸いです :sushi:

結論から言うと

RubyとRailsのバージョンは最新版を使おう。

環境

CentOS7 on VirtualBox

やったこと

1. rvmインストール

インストール手順は割愛。

確認
# rvm -v

2. Rubyインストール

チュートリアルに示されている通りに、2.0.0(安定版?)をインストール。
# rvm install 2.0.0

確認
# ruby -v

Gemのバージョンを合わせる。
# gem update --system 2.0.0

3. Railsインストール

こちらも、チュートリアルに示されている通りに、4.0.5をインストール。
# gem install rails --version 4.0.5

確認
# rails -v

4. Rails用ディレクトリ作成

非rootユーザのホームに作ることにします。
# su - namiki
$ mkdir rails_projects
$ cd rails_projects

プロジェクト新規作成でエラー

rails new を実行すると…
$ rails new newprj

この時のエラーメッセージを残し忘れてしまいましたが、
gem install json -v '1.8.2'を実行しろ」とのエラーが出ました。
bundle install でこけてるようです。

言われたとおりにインストール。
$ su -
# gem install json -v '1.8.2'

すると、こんなエラーが出る。
/bin/install: 通常ファイル `/usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib/usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/site_ruby/2.0.0/x86_64-linux/json/ext' を作成できません: そのようなファイルやディレクトリはありません

原因を調べてみる

ディレクトリがないと言われるので、ディレクトリ構造を見てみる。

ここまでは普通にある。
# ll /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib

これもある。
# ll /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib/json/ext

つまり、間にこれが挟まってるのがおかしい。
/usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/site_ruby/2.0.0/x86_64-linux

怪しいところを探す。
# cd /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/
# grep -r -i '/usr/local/rvm/rubies/' ./

ヒットしたファイルを書き換えてみる。
# vim ./ext/json/ext/generator/Makefile

Makefile
RUBYLIBDIR = /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib$(sitelibdir)$(target_prefix)
RUBYARCHDIR = /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib$(sitearchdir)$(target_prefix)

   ↓↓↓ $(sitelibdir) を削除

Makefile
#RUBYLIBDIR = /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib$(sitelibdir)$(target_prefix)
RUBYLIBDIR = /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib$(target_prefix)
#RUBYARCHDIR = /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib$(sitearchdir)$(target_prefix)
RUBYARCHDIR = /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib$(target_prefix)

bundle install でこけてたようなので、ここで実行してみる。
# bundle install

通った!!

rails new 再チャレンジ

# su - namiki
$ cd rails_projects
$ rails new newprj

/bin/install: 通常ファイル `/usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib/usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/site_ruby/2.0.0/x86_64-linux/json/ext' を作成できません: そのようなファイルやディレクトリはありません

あれれ〜?

さっき修正したMakefileを見てみると
# vim /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/ext/json/ext/generator/Makefile

Makefile
RUBYLIBDIR = /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib$(sitelibdir)$(target_prefix)
RUBYARCHDIR = /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib$(sitearchdir)$(target_prefix)

何故か元に戻っている…

ファイルのタイムスタンプを見てみると
# ll /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/ext/json/ext/generator/
何故か全ファイル更新されていました。
どうやら、rails newの都度インストールし直されるっぽい?

配布元( https://github.com/flori/json )を見ると、先ほど修正したMakefileは自動生成されるものだったようで、お手上げ\('ω')/

RubyとRailsのバージョンを上げてみる

JSONのGemのページを見てみると、この1.8.2というのは2015/03/09現在の最新版であることが分かりました。
https://rubygems.org/gems/json

もしかして、Gemだけ最新版というアンバランスな状態がダメなのでは?
ということで、RubyとRailsのバージョンを上げてみることにしました。

本来ならここでrvmを使ってスマートにRubyをバージョンアップしたかったのですが、
rvm install 2.2.1の後にrvm remove 2.0.0を実行すると、2.2.1ごとアンインストールしてしまいました。
結局、その後入れなおそうとしてもうまく動かず、仮想マシンを作るところからやり直すはめに…

rvmがインストールできたら、RubyとRailsの最新版をインストールする。
# rvm install 2.2.1
# gem install rails

再々チャレンジ
# su - namiki
$ cd rails_projects
$ rails new newprj

できた!!!

例のMakefileを確認してみます。
# vim /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/ext/json/ext/generator/Makefile

Makefile
RUBYLIBDIR = $(sitelibdir)$(target_prefix)
RUBYARCHDIR = $(sitearchdir)$(target_prefix)

おや?
\$(sitelibdir)\$(target_prefix) の前についていた /usr/local/rvm/gems/ruby-2.0.0-p598/gems/json-1.8.2/lib がありませんね。
これで正しいパスを指定するようになったようですが、原因は何だったのでしょう…

何はともあれ、ようやくスタート地点に立てました。

3
6
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
3
6