1. makoto_kw

    Posted

    makoto_kw
Changes in title
+rbenvでバージョンを指定する方法
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,84 @@
+
+rvmからrbenvに切り替えてみたのでrbenvがどういう方法でバージョンを指定できるのか確認してみた。基本 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が削除される。
+
+
+
+
+