bundler
rbenv

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

More than 3 years have passed since last update.


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.

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