rbenv いろいろ

rvm から rbenv に乗り換えて、しばらくたったので、どう感じなのかを書いてみる。

  • zsh でも安心
    • rvm と違って複雑なことをしていないので、 zsh が SEGV したり、 bash ならちゃんと動く機能が zsh だと動かなかったりということがない。
  • インストールが簡単
    • パッケージで入れるか git clone して PATH に追加するだけで使える
    • 「eval "$(rbenv init -)"」を追加するだけで補完が使える
  • バージョン設定
    • 「rbenv global」でデフォルトで使うバージョン設定 ( ~/.rbenv/version に保存)
    • 「rbenv local」でそのディレクトリ以下で使うバージョン設定 ( .rbenv-version に保存)
    • 「rbenv shell」で現在の環境で使うバージョン設定 (環境変数 RBENV_VERSION に設定、直接設定して export しても良い)
  • 情報表示
    • 「rbenv versions」で使えるバージョンを確認
    • 「rbenv version」で今使っているバージョンを確認
    • 「rbenv help」でヘルプ表示
    • 「rbenv commands」でコマンド一覧が出る (内部用っぽいのも出るのでいまいちかも)
  • ruby のインストール
  • プラグインで拡張できる
    • ruby-build で入る rbenv-install で「rbenv install」が使えるようになるようにサブコマンドが簡単に追加出来る (git 風?)
    • bundler を使っていないプロジェクト用に rbenv-gemset ( https://github.com/jamis/rbenv-gemset ) というプラグインもあるらしい

いくつかはまったことのメモも書いておきます。

  • 「rbenv version 」でタブを押してもスペースが入るだけで補完されないと思ったら、やりたかったことは「rbenv local 」か「rbenv shell 」だった。
    • 補完が変だと思ったら、使おうとしているサブコマンドが間違っていることが多い気がする。
  • cron などから実行するときに .rbenv-version をみてくれる ruby-local-exec というラッパースクリプトがあって、ちゃんと cd してから実行しないと使いたいバージョンにならなかった。
    • ちゃんと cd してから ruby-local-exec を使うようにして解決。
  • ruby-build を $HOME 以下に入れる方法がわかりにくかった。
    • 「PREFIX=$HOME/opt/ruby-build ./install.sh」のように環境変数 PREFIX を指定して install.sh を実行すれば良かった。
  • bash から exec zsh したら SHELL 環境変数が /bin/bash のままだったので「eval "$(rbenv init -)"」で bash 用の補完が設定されて変になった。
    • 先に SHELL 環境変数をちゃんと設定するようにして解決。他にも悪影響があったかもしれないので、 rbenv 自体は悪くないと思う。