rbenv rehashを行わなくて良い方法
rvmがオワコン扱いされだしたのはいつの頃からでしょうか?私はrbenvのrehashが嫌でしつこくrvmを使い続けていたのですが、ここ最近のrvmでのrubyインストールの不安定さに嫌気が差してrbenvに乗り換えることにしました。
$ cd $ rm -rf .rvm $ brew install rbenv$ brew install ruby-build $ echo 'eval "$(rbenv init -)"' >> .bash_profile $ brew install readline $ rbenv install 1.9.3-p194 $ rbenv global 1.9.3-p194
ちょとirbで動作確認してみます。
a = 1 a = 2 # ↑キーを押してキーヒストリが効くことを確認。readlineがうまく組み込まれてないとヒストリが効かない require 'psych' #yamlパーサーの確認。rvmはここで詰まることがよくある require 'zlib' #同じくrvmはここで詰まることがよくある require 'openssl' #同じく(略)
私の環境では問題ありませんでした。
次にrbenv で gem を使った時に rbenv rehash しなくて良くするというエントリを参考にしてシェルスクリプトで関数定義を行い、gemおよびbundleコマンドのオーバーライドを行いました。私のPCはMacOS Xなんですがrehashコマンドは無いみたいなので参考元のスクリプトからコピーする際に省いています。
$ vi .bash_profile
#適当な場所に定義 function gem(){ $HOME/.rbenv/shims/gem $* if [ "$1" = "install" ] || [ "$1" = "i" ] || [ "$1" = "uninstall" ] || [ "$1" = "uni" ] then rbenv rehash fi } function bundle(){ $HOME/.rbenv/shims/bundle $* if [ "$1" = "install" ] || [ "$1" = "update" ] then rbenv rehash fi }
では試してみましょう。
$ rspec rbenv: rspec: command not found # rspecコマンドは見つからない $ gem install rspec $ rspec /Users/kazuhisa/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.12.0/lib/rspec/core/configuration.rb:784:in `load': cannot load such file -- /Users/kazuhisa/spec (LoadError) #rspecを実行してテストファイルが見つからないのでエラーになってる
自動的にrbenv rehashしてくれてるみたいですね。良い感じです。
しばらくはrbenvを使ってみようと思います。