rbenv-updateを使ってRubyのバージョンを上げたついでにRailsをインストールした（CentOS）

rbenv plugin の rbenv-update を使用してRubyのバージョンを上げました。環境はMacにあるVagrantのCentOSです。

# きっかけ
以前rbenvでrubyのバージョンを上げた流れを投稿した記事へ、rbenv-updateを使うとrbenvのupdateは楽ですよと[コメント](http://qiita.com/pugiemonn/items/88b476dcf5d651ae5397#comments)をいただいたので使ってみました。

rbenvのバージョンなどは[rbenvを再インストールしてRubyのバージョンを上げた（CentOS）](http://qiita.com/pugiemonn/items/88b476dcf5d651ae5397)に書いてあるバージョンと同じです。

# rbenv-updateをインストールする
rbenvのpluguinをインストールします。
手順は https://github.com/rkh/rbenv-update ある通り3つのコマンドを順番に実行します。

```bash:rbenv-updateをインストール
[ -z "$RBENV_ROOT" ] && export RBENV_ROOT="$HOME/.rbenv"
mkdir -p "$RBENV_ROOT/plugins"
git clone https://github.com/rkh/rbenv-update.git "$RBENV_ROOT/plugins/rbenv-update"
```
これでrbenv-updateがインストールされました。

# rbenvをupdateする
rbenv-updateをインストールしたのでrbenv updateでrbenvをアップデートします。

```bash:rbenvをアップデート
rbenv update
updating rbenv
 |  From https://github.com/sstephenson/rbenv
 |  13a474c..1a7f49d  master     -> origin/master
略
```
rbenvのバージョンを確認します。

```bash:rbenvのバージョンを確認
rbenv --version
rbenv 0.4.0-131-g1a7f49d
```
rbenvがアップデートされてバージョンがあがりました。

# バージョンを指定してRubyをインストールする
ruby-2.2.0をインストールします。

```bash:バージョン指定してRubyをインストール
rbenv install -v 2.2.0

略

make[3]: ディレクトリ `/tmp/ruby-build.20150217115516.6099/ruby-2.2.0/ext/fiddle/libffi-3.2.1' から出ます
linking shared-object fiddle.so
/usr/bin/ld: ./libffi-3.2.1/.libs/libffi.a(raw_api.o): relocation R_X86_64_32 against `.text' can not be used when making a shared object; recompile with -fPIC
./libffi-3.2.1/.libs/libffi.a: could not read symbols: Bad value
collect2: ld はステータス 1 で終了しました
make[2]: *** [../../.ext/x86_64-linux/fiddle.so] エラー 1

略
```
エラーがでてlibffiが無いと言われました。

## libffi-develをインストール
先にlibffi-develをインストールします。

```bash:libffi-develをインストール
sudo yum -y install libffi-devel
```

## 再度Rubyをインストール
再度Rubyのインストールを試します。

```bash:バージョン指定してRubyをインストール
rbenv install -v 2.2.0
```
今度は成功しました。
インストールされているRubyのバージョンを確認します。

```bash:rbenvでRubyのどのバージョンがインストールされているかを確認
rbenv versions
  system
* 2.1.2 (set by /home/vagrant/.rbenv/version)
  2.2.0
```
ちゃんと2.2.0が入っています。以前は~/.ruby-versionでバージョン指定をしていたと思ったのですが、いつの間にか~/.rbenv/versionでRubyのバージョンが指定されているようです。

```bash:~/.rbenv/versionを書き換える
vi ~/.rbenv/version
2.2.0
```
rehashします。

```bash:rbenvをrehash
rbenv rehash
```
rbenvがどのRubyのversionを使用しているか確認します。

```bash:rbenvがRubyのどのバージョンを使用しているか確認
rbenv versions
  system
  2.1.2
* 2.2.0 (set by /home/vagrant/.rbenv/version)
```
rbenvではRubyが2.2.0に変更されています。

# Rubyのバージョンを確認
Rubyのversionを確認します。

```bash:Rubyのバージョンを確認
ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
```
目的どおりruby2.2.0になりました☆（ゝω・）vｷｬﾋﾟ

# Railsをインストール
Rubyが上がったのでついでにRailsをインストールします。

```bash:railsをインストール
gem install rails
Building native extensions.  This could take a while...
ERROR:  Error installing rails:
	ERROR: Failed to build gem native extension.

    /home/vagrant/.rbenv/versions/2.2.0/bin/ruby -r ./siteconf20150217-11667-1sfqxua.rb extconf.rb
checking if the C compiler accepts ... yes
Building nokogiri using packaged libraries.
checking for gzdopen() in -lz... yes
checking for iconv... yes
************************************************************************
IMPORTANT NOTICE:

Building Nokogiri with a packaged version of libxml2-2.9.2
with the following patches applied:
	- 0001-Revert-Missing-initialization-for-the-catalog-module.patch
	- 0002-Fix-missing-entities-after-CVE-2014-3660-fix.patch

Team Nokogiri will keep on doing their best to provide security
updates in a timely manner, but if this is a concern for you and want
to use the system library instead; abort this installation process and
reinstall nokogiri as follows:

    gem install nokogiri -- --use-system-libraries
        [--with-xml2-config=/path/to/xml2-config]
        [--with-xslt-config=/path/to/xslt-config]

If you are using Bundler, tell it to use the option:

    bundle config build.nokogiri --use-system-libraries
    bundle install

Note, however, that nokogiri is not fully compatible with arbitrary
versions of libxml2 provided by OS/package vendors.
************************************************************************
Extracting libxml2-2.9.2.tar.gz into tmp/x86_64-unknown-linux-gnu/ports/libxml2/2.9.2... OK
Running patch with /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/nokogiri-1.6.6.2/ports/patches/libxml2/0001-Revert-Missing-initialization-for-the-catalog-module.patch...
Running 'patch' for libxml2 2.9.2... ERROR, review '/home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/nokogiri-1.6.6.2/ext/nokogiri/tmp/x86_64-unknown-linux-gnu/ports/libxml2/2.9.2/patch.log' to see what happened.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
```
(´ﾟдﾟ｀)ｱﾁｬｰこれnokogiriを入れろってやつです。

## nokogiriをインストール
エラーメッセージにあるようにnokogiriをインストールします。

```bash:nokogiriをインストール
gem install nokogiri -- --use-system-libraries
```
nokogiriがインストールされました。

## 再度 Railsをインストール
もういちどrailsのインストールを試みます。

```bash:railsをインストール
gem install rails
```
nokogiriを入れたため今度はエラーが出ませんでした。

## Railsのバージョンを確認
Railsのバージョンを確認します。

```bash:railsのバージョンを確認
rails -v
Rails 4.2.0
```
ちゃんとインストールされたみたいです(☝ ՞ਊ ՞)

# 参考
http://qiita.com/pugiemonn/items/4b23a709ed194b02be6d