mongoid/mongo/bson/bson_ext最新版をインストールしてると、違うバージョンのbsonをloadしようとしてエラーが出て困る

全て最新のもの、つまりmongoid(2.0.0.beta.16)とmongo(1.0.8)とbson(1.0.6)とbson_ext(1.0.6)を使っていて、

require 'rubygems'
gem 'mongoid','2.0.0.beta.16'
require 'mongoid'

するとエラーが出る

/Users/sho/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/site_ruby/1.8/rubygems.rb:233:in `activate': can't activate bson (= 1.0.4, runtime) for ["mongoid-2.0.0.beta.16"], already activated bson-1.0.6 for ["mongo-1.0.7"] (Gem::LoadError)


とりあえずこうするとなんとかなる

gem uninstall bson --version "= 1.0.6"
gem uninstall bson_ext --version "= 1.0.6"
gem uninstall mongo --version "= 1.0.8"
gem install bson --version "= 1.0.4"
gem install bson_ext --version "= 1.0.4"
gem install mongo --version "= 1.0.7"

たぶん、mongoidの中でbsonを1.0.4で指定してloadしてて、でもmongoidがloadしてるmongo 1.0.7がbsonをバージョン指定せずにloadしているとかじゃないか?と思うのでちょっとソース読んでみる


探してもbsonをバージョン指定して読み込んでる箇所が無かった。
そのかわり、アプリ側でこう書けば先に1.0.4のbsonが読まれるのでなんとかなる!!

gem 'bson','1.0.4'
gem 'bson_ext','1.0.4'
gem 'mongoid','2.0.0.beta.16'
require 'mongoid'

でも気持ち悪いからなんとかしたいな・・