bundle install しようとしたら ruby のバージョン違くてコケた話

  • 64
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

bundle install できない!

久しぶりにデプロイしようとしたらまず bundle install しろと怒られました。
しぶしぶ bundle install した結果・・・

$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/........
Fetching version metadata from https://rubygems.org/..
Using rake 10.3.2
Using i18n 0.6.11
Using minitest 4.7.5
Using multi_json 1.9.0
Using atomic 1.1.15
Using thread_safe 0.2.0
Using tzinfo 0.3.39

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

コケた!こないだまで大丈夫だったのに!
開発環境でも bundle install できてたのですが、デプロイ用のサーバ上でやるとコケる・・・これはいかに。

原因は?

こないだ追加した gem がダメだったのか、それとも何かバージョンが上がったのか、とか妄想を巡らせたのにダメ。
ruby のバージョンも問題なし。

$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux]

そういえばこのサーバは rbenv で ruby のバージョンいじってました。

$ cd ~
$ rbenv versions
* system
  2.0.0-p481 (set by /home/user/.rbenv/version)
$ cd /path/to/app
$ rbenv versions
  system
* 2.0.0-p481 (set by /path/to/app/.ruby-version)

ぐぬぬ。
となると、bundle が使ってる ruby が違うのでは・・・?

$ which ruby 
~/.rbenv/shims/ruby  # rbenv の ruby
$ which bundle
/usr/bin/bundle # グローバル!

それだ!!

という訳で解決方法

ローカル ruby で bundle を使えるようにします。

$ cd /path/to/app
$ rbenv exec gem install bundler
Fetching: bundler-1.10.3.gem (100%)
Successfully installed bundler-1.10.3
Parsing documentation for bundler-1.10.3
Installing ri documentation for bundler-1.10.3
1 gem installed
$ rbenv rehash # 忘れずに!
$ which bundle
~/.rbenv/shims/bundle

おお、ようやく来ました。という訳で気を取り直してもう一度。

$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/........
Fetching version metadata from https://rubygems.org/..
Using rake 10.3.2
Using i18n 0.6.11
Using minitest 4.7.5
Using multi_json 1.9.0
Using atomic 1.1.15
Using thread_safe 0.2.0
Using tzinfo 0.3.39
...(中略)...
Using bundler 1.10.3
Bundle complete! 15 Gemfile dependencies, 45 gems now installed.
Bundled gems are installed into ./vendor/bundle.

やっと正常にインストールできました。めでたし。