【解決】Your Ruby version is 2.0.0, but your Gemfile specified 1.9.3
何をやろうとしたか
Heroku で運用している Gollum を Procfile 経由で利用するため$ bundle exec foreman start
で起動を試みるもYour Ruby version is 2.0.0, but your Gemfile specified 1.9.3
が発生。
解決までの経緯
$ rbenv version
で現在の Ruby バージョンを確認。
1.9.3-p545 (set by /usr/local/var/rbenv/version)
で問題なし。$ bundle exec ruby -v
で bundler 上のバージョンを確認。
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-darwin13.1.0]
で問題なし。この Issue を参照しいろいろ試したが、特に進展なし。
Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0 · Issue #400 · sstephenson/rbenvbundler による Gem のインストール先パス
vendor/bundle
がキレイじゃないのかと予想しフォルダごと削除し再インストール。結果変わらず。「このままでは今までできていたことができなくなるヤバい」と思い、従来の起動方法
$ bundle exec gollum
を試したところあっさり起動。全体的にぶっ壊したかと思っていたが、foreman に原因があるところまで絞り込めた。あなたどちらの foreman さんですかということで
$ bundle exec which foreman
で尋ねると/usr/bin/foreman
とのお返事。お前ちゃうわ。$ bundle exec gem list
を実行。ここで Gollum には foreman が含まれていないことに気づく。そもそも foreman は Heroku で動かすために利用するのであって、Gollum 自体を動かすのに必要なわけではない。Gemfile に
gem 'foreman'
を追記。$ bundle install --path vendor/bundle
で再インストール。$ bundle exec which foreman
/Users/Syon/GitHub/syon/wiki/vendor/bundle/ruby/1.9.1/bin/foreman
$ bundle exec foreman start
が成功。
学んだこと
$ bundle exec ****
で捕捉できなかったコマンドはそのままシステムに渡されるようだ。確かに Bundler は範囲を限定して利用したい Gem の管理を目的に使うが、それらもあくまで OS の上に乗って動くものだから当然といえば当然か。
$ bundle exec ps
、$ bundle exec vim
も動いた。でも$ bundle exec brew
だと同じエラーが発生。Ruby が関係しているコマンドに当たるとそのコマンドで使っているバージョンにすり替わって、Gemfile に対し rbenv にて使用中ではないバージョンが伝わりブロックされたのではと予想。