1. makoto_kw

    No comment

    makoto_kw
Changes in title
-rbenvでバージョンを指定する方法
+rbenvでRubyのバージョンを指定する方法
Changes in body
Source | HTML | Preview
@@ -1,84 +1,84 @@
-rvmからrbenvに切り替えてみたのでrbenvがどういう方法でバージョンを指定できるのか確認してみた。基本 https://github.com/sstephenson/rbenv/ の要約および動作確認、バージョンは0.4.0。
+rvmからrbenvに切り替えてみたのでrbenvがどういう方法でRubyバージョンを指定したり、状況によって切り替えることができるのか確認してみた。基本 https://github.com/sstephenson/rbenv/ の要約および動作確認、バージョンは0.4.0。
## shims
~/.rbenv/shimsにあるスクリプトが使うコマンド(irb, gem, rake, rails, rubyなど)を振り分けてくれるっぽい。shimsが振り分けた先を知るには```rbenv which```を使う。
```
$ rbenv which ruby
~/.rbenv/versions/1.9.3-p392/bin/ruby
```
**bundle**などgemでインストールして新しいコマンドが増える場合は~/.rbenv/shimsに振り分けるスクリプトを置かないといけないので```rbenv reash```を唱える必要がある。
## RBENV_VERSION
ドキュメントによると**RBENV_VERSION**環境変数が使うバージョンを決める。従ってコマンドラインからだと以下で切り替えられる。
```
$ export RBENV_VERSION=1.9.3-p392
$ ruby -v
ruby 1.9.3p392 ...
```
## global/local/shell
実際のところRBENV_VERSIONは直接意識しなくてもいいようになっている。
使うデフォルトのバージョンを固定したい場合は**global**を使う。すると *~/.rbenv/version* に使うバージョンが書き込まれる。
```
$ rbenv global 1.9.3-p392
```
プロジェクトで特定のバージョンを使いたいときは、**local**を使う。すると、カレントディレクトリの *.ruby-version* に使うバージョンが書き込まれる。
```
$ rbenv local 1.8.7-p371
```
コマンドラインから一時的に切り替えたい場合は**shell**を使う。すると、環境変数 *RBENV_VERSION* に設定される。
```
$ rbenv shell 2.0.0-p0
```
localおよびshellに指定したバージョンは--unsetオプションにより取り消せる(globalは取り消せなかった、後述のsystemに戻すことで代用できる)。なおlocalの場合は *.ruby-version* ファイルが削除される。
```
$ rbenv local --unset
$ rbenv shell --unset
```
念のため実験したところ優先順位はちゃんとshell > local > globalの順で適応された。
## system
ディストリビューションなどで例えば/usr/bin/rubyにRubyがインストールされていることがある。こういったRubyは**system**というキーワードで指定することができる。
```
$ rbenv shell system
$ rbenv local system
$ rbenv global system
```
```rbenv global --unset```の代わりとして```rbenv global system```が利用できる。
## 古い.rbenv-version
互換性のために.rbenv-versionから.ruby-versionを使うようになっている。
* .rbenv-versionと.ruby-versionの両方が存在する場合
* .ruby-versionが優先される
* ```rbenv local```使った場合は.ruby-versionのみ更新される
* ```rbenv local --unset```使った場合は.ruby-versionも.rbenv-versoinも削除される
* .rbenv-versionだけがある場合
* ```rbenv local```を実行すると.rbenv-versionが削除され.ruby-versionが作成される。
* ```rbenv local --unset```使った場合は.rbenv-versoinが削除される。