rbenv で ruby の環境を整える

## 忙しい人のためのまとめ

1. インストール
    Macは `brew install rbenv ruby-build` でインストール。

    Ubuntuは

        git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
        git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
        apt-get install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev

    追記: 2016/09/29
    `apt` でインストールできるようになってました。当然ですが、`git clone`でセットアップしたほうが、最新のものになります([Ref.](http://qiita.com/ringo/items/4351c6aee70ed6f346c8#comment-d5bc999e1e68ff2782b1))。

    ```
    apt install rbenv ruby-build
    ```

2. .bash/zshrc ファイルに追加。

		[[ -d ~/.rbenv  ]] && \
		  export PATH=${HOME}/.rbenv/bin:${PATH} && \
		  eval "$(rbenv init -)"

3. rubyのインストール

		rbenv install 2.2.2
		rbenv global 2.2.2
		ruby -v


## rbenvのインストール

[GitHub: sstephenson/rbenv](https://github.com/sstephenson/rbenv)に書いてある通りインストールする 。また、rubyをインストールするためのプラグインである、[ruby-build](https://github.com/sstephenson/ruby-build)もインストールする。ruby-buildとrbenvの関係については「[rbenv + ruby-build はどうやって動いているのか](http://takatoshiono.hatenablog.com/entry/2015/01/09/012040)」を参照。

```
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
```

また、[ruby-build](https://github.com/sstephenson/ruby-build/wiki)の``Suggested build environment''に必要な環境が記述されているので、各システムにあった方法を参照しインストールする。

今回はUbuntuなので下記のコマンドでインストールする。

```
apt-get install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
```

`.bashrc`、`.zshrc`もしくは`.zshenv`等に下記を追加し、パスを通す。

```
[[ -d ~/.rbenv  ]] && \
  export PATH=${HOME}/.rbenv/bin:${PATH} && \
  eval "$(rbenv init -)"
```

## rubyのインストール

```
rbenv install -l
```

でインストール可能なrubyのバージョンが一覧される。特定のバージョンをインストールするコマンドはつぎのようになる。

```
rbenv install 2.2.2
```

rubyのインストールが完了したら、利用するrubyのバージョンを指定する。
指定方法は`rbenv local`と`rbenv global`があり、localは特定のワークスペース（ディレクトリ）でrubyのバージョンを使用する場合に指定する。これは、そのディレクトリにある`.ruby-version`ファイルを書き換えて管理している。一方、globalはシステム全体で使用するバージョンを指定するコマンドである。基本的に使いたいバージョンをglobalで指定し、プロジェクトによってバージョンを変更したい場合はlocalで指定するのがよい。

```
rbenv global 2.2.2
```

また、rbenvでrubyをインストールしたり、gemでパッケージをインストールした後は`rbenv rehash`を実行しなければならなかった。実行することによって、指定したバージョンの`ruby`や`gem`コマンドが`.rbenv/shims`に配置される。現在はrbenv本体に取り込まれたため不要である（[sstephenson/rbenv/pull/638](https://github.com/sstephenson/rbenv/pull/638)）。

最後に、指定したバージョンの`ruby`にパスが通っているか確認しておこう。

```
$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
$ which ruby
~/.rbenv/shims/ruby
$ which gem
~/.rbenv/shims/gem
```


## Errors

### The Ruby openssl extension was not compiled. Missing the OpenSSL lib?

```
Downloading ruby-2.2.2.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44
Installing ruby-2.2.2...

BUILD FAILED (Ubuntu 14.04 using ruby-build 20150519-3-ge932d47)

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

Last 10 log lines:
                              rake 10.4.2
                              rdoc 4.2.0
skip installing bundle gems because of lacking zlib
...
The Ruby openssl extension was not compiled. Missing the OpenSSL lib?
```

opensslのなにかが不足してるっぽいのでインストールする。
[ruby-build](https://github.com/sstephenson/ruby-build/wiki)の``Suggested build environment''に必要な環境が記述されていた。

```
apt-get install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
```

## References
- [sstephenson/rbenv · GitHub
](https://github.com/sstephenson/rbenv)
- [sstephenson/ruby-build · GitHub
](https://github.com/sstephenson/ruby-build)
- [Home · sstephenson/ruby-build Wiki · GitHub
](https://github.com/sstephenson/ruby-build/wiki)
- [rbenv + ruby-build はどうやって動いているのか - takatoshiono&#39;s blog
](http://takatoshiono.hatenablog.com/entry/2015/01/09/012040)
- [rbenvでrehashがいらなくなった | bgbgbg
](http://blog.bgbgbg.net/archives/2596)
- [Bring rbenv-gem-rehash functionality to core by mislav · Pull Request #638 · sstephenson/rbenv · GitHub
](https://github.com/sstephenson/rbenv/pull/638)