tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【rbenv】rbenvで指定したrubyバージョンに切り替わらない時の対処法 - Homebrewで入れたrubyが原因編

はじめに

rbenvでrubyのversionを更新しようと思ったのですがなぜか切り替わらない....

昔も同じ事がありましたが、
今回はそれとは違い凡ミスでしたが小一時間使ってしまったので自分戒めメモ

最初に行った事

rbenvで切り替わらない系の記事は調べるとたくさん出てきます。

だいたいパスが通ってない場合が多いです。
昔同じ事があったと書きましたが、その時もこれでした。

ながれ

  • 切り替え後にruby -vでバージョンを確認
    • 切り替わってない
  • パスを確認
    • /Users/ユーザ名/.rbenv/shims/ruby になっていて欲しいがなってない
  • ~/.bash_profileにパスを追加
    • sourceコマンドで反映をお忘れなく
  • 再度ruby -vでバージョンを確認
    • 切り替わってる...はずだった...

やるとこんな感じ

# 切り替えたはず
$ rbenv versions
  system
  2.1.2
  2.2.0
* 2.4.1 (set by /Users/hoge/.rbenv/version)

# 切り替わってない
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin13]

# rubyのパスを確認すると違うところみてる
$ which ruby
/usr/local/bin/ruby

# ~/.bash_profileにパスを追加 & 読み込み
$ vim ~/.bash_profile
---- vim ----
export PATH="$HOME/.rbenv/shims:$PATH"
-------------

$ source ~/.bash_profile

# 再度バージョン確認。変わってない...
$ ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin13]

参考

正解

なんでだーーー
と思いながら小一時間なやみましたが凡ミスでした。

自分は以前、homebrewでrubyを入れたのですが、
その時に追加されたパスが悪さをしていました。

# rbenv用に追加したパス
export PATH="$HOME/.rbenv/shims:$PATH"
eval "$(rbenv init -)"

~ 省略 ~ 

# 下の方にhomebrewのパス設定
# PATHの先頭にhomebrew用のパスが追加されて先に読まれてしまう
# これにより/usr/local/bin/rubyが読まれてしまう
export PATH="/usr/local/bin:$PATH"

確認

確認すると確かにhomebrewのrubyが使われています。

# rubyコマンドをあらためて確認
$ which ruby
/usr/local/bin/ruby

# lsで見てみるとhomebrewのrubyへのシンボリックリンク
# なるほど...
$ ls -l /usr/local/bin/ruby*
lrwxr-xr-x  1 hoge  admin  29  9  6  2016 /usr/local/bin/ruby -> ../Cellar/ruby/2.3.1/bin/ruby
lrwxr-xr-x  1 hoge  admin  44  1 24 03:55 /usr/local/bin/ruby-build -> ../Cellar/ruby-build/20171226/bin/ruby-build

切り替えられるようにする

homebrewで入れたrubyを消してもよかったのですが、
vimに必要だったりしたので素直にhomebrewのパス設定より後にrbenvのパス設定を追加するようにしました。

# homebrewの設定
export PATH="/usr/local/bin:$PATH"

# rbenv用に追加したパス
export PATH="$HOME/.rbenv/shims:$PATH"
eval "$(rbenv init -)"

おわり

パスの上書きは気づきにくい!!\(^o^)/