読者です 読者をやめる 読者になる 読者になる

ハイパーニートプログラマーへの道

頑張ったり頑張らなかったり

rvmからrbenvに乗り換える on Mac

試してから時間が経ってるので、正直言って自信はありませんが・・・。(単なる下書き消化のためなのは内緒なんだぜ)

以前の記事でhyperneetprogrammer.hatenablog.com

Ubuntuでrbenvに乗り換えたので、Macの方でもやってみようと。

brew update済みで

rvmの切腹

$ rvm seppuku

その後.bashrc.bash_profile.zshrcなどのrvm関連の設定を削除。
なんか「.rvm削除できませんでしたああああ」な感じのメッセージもでたので、手動で削除(.rvmrcも。メッセージにはもう一つでたけど、それは見当たらず。名前を失念した)

rbenv,ruby-buildのインストール

$ brew install rbenv ruby-build
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile # or ~/.zshrc

Rubyのインストール

rbenv install -lでインストールできるバージョンを確認。その後

$ brew install readline openssl
$ brew link readline
$ brew link openssl
$ CONFIGURE_OPTS="--with-readline-dir=/usr/local --with-openssl-dir=/usr/local" rbenv install 2.1.5

既にHomebrewでreadline,openssl をインストール済みだったので、それらをリンクさせてみる(実はよくわかってない)。
でも前回のように途中でコケることなく、無事インストール。ちなみにこのリンクを毎回やるのかなあ?

ここをそのまま参考にしたので・・・。

Happy Elements Labs: モテカワるびいすとのための rbenv 入門

Gistも用意してくださってます。ありがたい。

gist.github.com

その後のgloballocalを用いたバージョン指定は説明不要かなと。

rbenv rehash

rbenv global x.x.xで設定したあと$ sudo gem install bundlebundle入れます。

  • Before
 ls ~/.rbenv/versions/2.1.4/bin/
erb gem irb rake    rdoc    ri  ruby    testrb
  • After
$ ls ~/.rbenv/versions/2.1.4/bin/
bundle  erb irb rdoc    ruby
bundler gem rake    ri  testrb

ふむ。しかし

$ ls ~/.rbenv/shims
erb gem irb rake    rdoc    ri  ruby    testrb

こちらにはコピーされていないと(厳密にはコピーではないらしいけど)。

$ rbenv rehash

$ ls ~/.rbenv/shims
bundle  erb irb rdoc    ruby
bundler gem rake    ri  testrb

なんか「rehashしたよ!」的なメッセージがでないんですね・・・。

rbenv rehashを自動でやるためのgemコマンドのラッパーをつくる

gemのインストール/アンインストール時に毎回rbenv rehashをやるのもダルいので

rbenv で gem を使った時に rbenv rehash しなくて良くする - sorry, uninuplemented:

この記事で紹介されている

方法2: zshの関数でgemコマンドのラッパーをつくる

をやってみます。bashだけど。

rehashでなくてhash -r

元記事ではrbenv rehashのあとにrehashをしていましたが(.zshrcへの設定なので?)

bashだとhash -rのようなので

bashにおけるrehash - ほくの日記

hash再構築は rehash じゃなくて hash -r - 今日もスミマセン。

function gem(){
    $HOME/.rbenv/shims/gem $*
    if [ "$1" = "install" ] || [ "$1" = "i" ] || [ "$1" = "uninstall" ] || [ "$1" = "uni" ]
    then
        rbenv rehash
        hash -r
    fi
}

メッセージも欲しいので

function gem(){
    $HOME/.rbenv/shims/gem $*
    if [ "$1" = "install" ] || [ "$1" = "i" ] || [ "$1" = "uninstall" ] || [ "$1" = "uni" ]
    then
        echo Run rbenv rehash...
        rbenv rehash
        echo Done.
        echo Run hash -r...
        hash -r
        echo Done.
    fi
}

こいつをそのまま.bash_profileに打ち込みます。そしてsource .bash_profileして・・・

Rubyのバージョン変更し、再度トライ。しかしこれではsudoつけてgemをインストールした場合にメッセージでないな。

$ sudo gem install bundle
  • Before
$ ls ~/.rbenv/versions/2.1.2/bin/
erb gem irb rake    rdoc    ri  ruby    testrb
  • After
$ ls ~/.rbenv/versions/2.1.2/bin/
bundle  bundler erb gem irb rake    rdoc    ri  ruby    testrb
  • ~/.rbenv/shims
$ ls ~/.rbenv/shims
bundle  bundler erb gem irb rake    rdoc    ri  ruby    testrb

ん? でも2.1.4の時と同じことしたから違いがわからんw

rbenv-gem-rehash

rehashがやっぱりメンドイので、rbenv-gem-rehashを導入しますか・・・。
が、これは要らん子になったともあります。

Bring rbenv-gem-rehash functionality to core by mislav · Pull Request #638 · sstephenson/rbenv · GitHub

Remove rbenv-gem-rehash plugin installation by keith · Pull Request #327 · thoughtbot/laptop · GitHub

This plugin was merged into rbenv

ふーむ。rbenvへ組み込まれたのかな? でもその後ちょっと問題はあるみたいだしなあ。

そうこうしているうちに必要なバージョンのRuby入れ終えたので、やってみるか。

rbenv-gem-rehashを入れてみる

$ brew install rbenv-gem-rehash

Railsインストール

rails入っとらんよといわれるので。システムにインストール。

$ sudo gem install rails -v 4.2.0

とりあえず今必要な4.2.0を。

インストール後、確認

$ ls ~/.rbenv/shims
bundle      gem     rails       ruby        tilt
bundler     irb     rake        sprockets
erb     nokogiri    rdoc        testrb
erubis      rackup      ri      thor

ふむ。rehashされているようです。

(これは今回やらず)rbenv-rehash

もう一つ、(紛らわしいですが)rbenv-rehashがあります。
前回は(よくわからず)gem install rbenv-rehashしてましたが

ryansouza/rbenv-rehash · GitHub

各バーションのRubyにて用意しなければいけないみたいなのでそれもメンドイ。

参考箇所:
ryansouza/rbenv-rehash · GitHub

Install with gem install rbenv-rehash on each installed ruby version for optimal results

「on each installed ruby version」が気になるところ(自分の英語力では自信ないw)

rbenv で gem を使った時に rbenv rehash しなくて良くする - sorry, uninuplemented:

方法1: rbenv-rehash という gem を入れる % gem install rbenv-rehash とするとインストールできます. しかし,複数Rubyを管理している場合,各バージョンのRubyのgemにインストールしておかなければいけません. また,シェルのビルトインコマンドのほうのrehashのほうは行なってくれないため,そっちは結局手動で更新する必要があります.


その他

プロンプトにRubyのバージョンを表示したい - ザリガニが見ていた...。

ここを参考に現在のRubyのバージョンがプロンプトに表示されるようにした。