フロントエンジニア歴2年目、未だにコマンドのインストールが苦手なエンジニアです。
サンプルアプリをRailsで作ろうとして、Bundlerをインストールするときに詰まったのでメモしておきます。
主にパスの通し方で悩んでいました。
Bundlerについて
Bundler
Gemfileに記載されたパッケージの種類・バージョンのものをインストールするための仕組み。
Gemパッケージ
Rubyで使うライブラリやアプリケーションを、RubyGemというツールでインストールできるようにしたもの。
Gemfileに必要なGemとバージョンを記載しておく。npmとかBowerみたいなやつ。
ruby 2.x.x以上でデフォルトでgemコマンドが使えます。
動作確認環境
- ruby 2.1.2
- shellはzsh(詳しくはない)
- 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 // 見つからない
- gem install後の約束ごと
上記記事を見るとrbenv rehashをすればいけるっぽい。
$ rbenv rehash
$ bundle -v
Bundler version 1.7.4 // 行けた!
- パスを通す
が、ターミナルの別タブで再度bundleを呼び出せないので、rehashだけではなくパスを通さなくちゃいけないようです。
多分gemのパッケージがある場所をターミナルは知らないのかなと…。
bundleコマンドにパスが通っていなかったときの対処法 を参考に、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をインストールしている人の手順なのかな、と思っています。(違っていたらご教授いただけると嬉しいです…>_<)
- rbenv rehashがやっていること
こちらのサイト(rbenv rehashは何をやっているのか?)で詳しく検証されていますが、
rbenv rehash が何を行っているかというと、 ~/.rbenv/shims というディレクトリに ruby 自体や gem でインストールした実行ファイルを起動するための実行ファイルを作ってくれる。
引用: rbenv で ruby のバージョン管理をする(Mac)
実行コマンドを認識できるように環境を整える調整役のようなものか・・と納得。一応ヘルプを見ておくと、
$ rbenv help rehash
Usage: rbenv rehash
Rehash rbenv shims (run this after installing executables)
インストール後に実行してね、と書かれていました。
gemをinstallしたら $ rbenv rehash
は当たり前らしい。
めんどくさすぎてrbenv-rehashってgemができるくらい当たり前らしい。
絶対忘れるのでこっちも入れておきます。