RubyMine で "Your Ruby version is x.x.x, but your Gemfile specified z.z.z (Bundler::RubyVersionMismatch)" がでるとき


RubyMine 6.3 で Rake 実行時に

Error:[rake --tasks] /Users/n/.gem/ruby/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:361:in `validate_ruby!': Your Ruby version is 2.0.0, but your Gemfile specified 2.1.2 (Bundler::RubyVersionMismatch)
    from /Users/n/.gem/ruby/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:116:in `setup'
    from /Users/n/.gem/ruby/2.0.0/gems/bundler-1.3.5/lib/bundler/setup.rb:17:in `<top (required)>'
  :

みたいなエラーがでてしまうときの対処方法。

原因

Gemfile に指定してあるインタプリタのバージョンと、実際に rake を実行しているバージョンが異なるのが原因。

そこで Gemfile でのインタプリタのバージョン指定、たとえば

ruby "2.1.2"

と書いてある箇所を消せばとりあえず直る。

直るが…… 意図しないインタプリタ上で Rake タスクが走ってしまう、そもそも Heroku にデプロイできなくなる、などなどハマりどころ満載なので、そんな安直な解決は禁物。実際に動作しているバージョンへ Gemfile を直してしまうのもダメ。それでは何も解決していないではないか。喝!

修正

  1. そなたが当に使いたいインタプリタのバージョンを Gemfile に書くのじゃ
  2. rbenv なり rvm (オレ使ってないけど) なりを使ってそのインタプリタをインストールするのじゃ
  3. "Preferences" → "Ruby SDK and Gems" を開き、2. でインストールしたインタプリタを指定するのじゃ
  4. "File" → "Invalidate Caches" → "Invalidate and Restart" して、RubyMine に魂を入れ直すのじゃ