Bundlerのインストール時に、初めてgemをインストールするときに詰まったこと。

フロントエンジニア歴２年目、未だにコマンドのインストールが苦手なエンジニアです。
サンプルアプリをRailsで作ろうとして、Bundlerをインストールするときに詰まったのでメモしておきます。
主にパスの通し方で悩んでいました。

Bundlerについて
--------------
### Bundler
Gemfileに記載されたパッケージの種類・バージョンのものをインストールするための仕組み。

### Gemパッケージ
Rubyで使うライブラリやアプリケーションを、RubyGemというツールでインストールできるようにしたもの。  
Gemfileに必要なGemとバージョンを記載しておく。npmとかBowerみたいなやつ。
ruby 2.x.x以上でデフォルトでgemコマンドが使えます。


動作確認環境
-----------
* ruby 2.1.2
* shellはzsh（詳しくはない）


1. Bundlerのインストール
-----------------------

```
$ gem install bundler  // Bundlerでもbundleでもないので注意
Fetching: bundler-1.7.4.gem (100%)
Successfully installed bundler-1.7.4
Parsing documentation for bundler-1.7.4
Installing ri documentation for bundler-1.7.4
Done installing documentation for bundler after 6 seconds
1 gem installed

$ bundle -v
zsh: command not found: bundle  // パスが通ってない
$ where bundle  // 見つからない
```

2. gem install後の約束ごと
-------------------------

* [gem install経由のbundlerがcommand not foundになった時の対処](http://qiita.com/komeiy/items/6bb8621620337e0308f4)
* [rbenv rehashは何をやっているのか？](http://dqn.sakusakutto.jp/2014/02/rbenv_rehash_what_it_does.html)

上記記事を見るとrbenv rehashをすればいけるっぽい。

```
$ rbenv rehash
$ bundle -v
Bundler version 1.7.4  // 行けた！
```

3. パスを通す
------------

が、ターミナルの別タブで再度bundleを呼び出せないので、rehashだけではなくパスを通さなくちゃいけないようです。
多分gemのパッケージがある場所をターミナルは知らないのかなと…。

[bundleコマンドにパスが通っていなかったときの対処法](http://qiita.com/hyshhryk/items/7e728ad57d963454b142) を参考に、gemファイルのインストール先を調べます。

```
$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 2.1.2 (2014-05-08 patchlevel 95) [x86_64-darwin12.0]
  - INSTALLATION DIRECTORY: /Users/user_name/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0
  - RUBY EXECUTABLE: /Users/user_name/.rbenv/versions/2.1.2/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/user_name/.rbenv/versions/2.1.2/bin
  - SPEC CACHE DIRECTORY: /Users/user_name/.gem/specs
...
```
とあり、どうやらEXECUTABLE DIRECTORY（実行ファイルのあるディレクトリ？）は ```/Users/user_name/.rbenv/versions/2.1.2/bin``` のようなので、

インストール場所を確認

```
$ /Users/user_name/.rbenv/versions/2.1.2/bin/bundler -v
Bundler version 1.7.3
```

確かにあったので、上記パスを追加。

~/.zprofileに

```
path=(
  /usr/local/{bin,sbin}
  /Users/user_name/.rbenv/versions/2.1.2/bin
  $path
)
```

こんな感じで追加して、 ```$ source ~/.zprofile``` する。

```
$ bundle -v  # Bundlerの実行コマンドはbundle
Bundler version 1.7.3
```

やっとbundlerのインストールができました！

同じように、```$ gem install rails``` でRailsをインストールするときには、パスは同じだったので変更不要でした。
ので、色んなサイトで書かれているBundlerのインストール手順は、既に何度かgemをインストールしている人の手順なのかな、と思っています。（違っていたらご教授いただけると嬉しいです…>_<）


4. rbenv rehashがやっていること
------------------------------

こちらのサイト（[rbenv rehashは何をやっているのか？](http://dqn.sakusakutto.jp/2014/02/rbenv_rehash_what_it_does.html)）で詳しく検証されていますが、
> rbenv rehash が何を行っているかというと、 ~/.rbenv/shims というディレクトリに ruby 自体や gem でインストールした実行ファイルを起動するための実行ファイルを作ってくれる。

引用： [rbenv で ruby のバージョン管理をする（Mac）](http://blog.twiwt.org/e/66a1d0)

実行コマンドを認識できるように環境を整える調整役のようなものか・・と納得。一応ヘルプを見ておくと、

```
$ rbenv help rehash
Usage: rbenv rehash
Rehash rbenv shims (run this after installing executables)
```
インストール後に実行してね、と書かれていました。

gemをinstallしたら ```$ rbenv rehash``` は当たり前らしい。
めんどくさすぎて[rbenv-rehash](https://github.com/sstephenson/rbenv-gem-rehash)ってgemができるくらい当たり前らしい。
絶対忘れるのでこっちも入れておきます。


### 参考サイト
* [gem install経由のbundlerがcommand not foundになった時の対処](http://qiita.com/komeiy/items/6bb8621620337e0308f4)
* [bundleコマンドにパスが通っていなかったときの対処法](http://qiita.com/hyshhryk/items/7e728ad57d963454b142) 
* [rbenv rehashは何をやっているのか？](http://dqn.sakusakutto.jp/2014/02/rbenv_rehash_what_it_does.html)
* [rbenv で ruby のバージョン管理をする（Mac）](http://blog.twiwt.org/e/66a1d0)
* [rbenv-rehash](https://github.com/sstephenson/rbenv-gem-rehash)