rbenvを使ってバージョン設定とbundleの食い違い

Ruby on Railsを使う際に気を付けなければならないのが,それぞれのバージョンです。

 今まで普通にbundle install出来ていたのに,なぜかその時はエラーが出た。

 

Gem::InstallError: listen requires Ruby version >= 2.2.3, ~> 2.2.
An error occurred while installing listen (3.1.5), and Bundler cannot continue.
Make sure that `gem install listen -v '3.1.5'` succeeds before bundling.

 

しかしその時のrubyのバージョンはしっかり2.2.3。

$ ruby -v
ruby 2.2.3p173

 

 何がダメなのか色々googleってみたところ,どうもbundle内のrubyのバージョンが違うらしい。。

 

rubyとbundleのrubyのバージョンが違う時

$ which ruby 
~/.rbenv/shims/ruby  
$ which bundle
/usr/bin/bundle 

 

rbenvでバージョン管理をやっているので,rubyはrbenvから来てるがbundleはグローバルだった!

 

そんな感じで,bundleを使えるようにするために,アプリのディレクトリ上で

$ rbenv exec gem install bundler

をする。

 

するとまあビンゴです!

 

 

ちなみに,自分の希望のrubyのバージョンがglobalになっているにも関わらず,バージョンが切り替わってない時は

$ rbenv init

 

# Load rbenv automatically by adding # the following to ~/.bashrc: eval "$(rbenv init -)"

 

みたいな感じのが出たので,

$ eval "$(rbenv init -)"

と,従えば綺麗に切り替わりました。